Sử dụng chú thích trong Java

Chú thích (Annotation) là một tính năng quan trọng và mạnh mẽ trong Java, cho phép thêm thông tin.metadata vào mã nguồn mà không làm thay đổi logic xử lý. Tính năng này hỗ trợ tạo mã tự động, xử lý động tại thời gian chạy và đơn giản hóa cấu hình, giúp tăng hiệu suất phát triển và độ linh hoạt của ứng dụng.

Cơ sở về chú thích

Chú thích được định nghĩa bằng từ khóa @interface, bao gồm các phương thức chỉ có chữ ký không có thân hàm. Ví dụ:

public @interface ThongTinChucNang {
    String moTa();
}

Trong đoạn mã trên, chú thích ThongTinChucNang chứa thuộc tính moTa kiểu chuỗi. Khi sử dụng chú thích này, cần cung cấp giá trị chuỗi tương ứng.

Chú thích siêu cấp

Các chú thích siêu cấp (meta-annotations) được sử dụng để mô tả chú thích khác. Các chú thích phổ biến bao gồm:

  • @Target: Xác định phạm vi áp dụng (lớp, phương thức, tham số...)
  • @Retention: Quy định thời gian tồn tại (nguồn, bytecode, runtime)
  • @Documented: Hiển thị thông tin chú thích trong tài liệu Javadoc
  • @Inherited: Cho phép lớp con kế thừa chú thích

Ví dụ định nghĩa chú thích chỉ áp dụng cho phương thức:

import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface GhiChuPhuongThuc {
}

Ứng dụng chú thích

Chú thích có thể áp dụng lên nhiều phần tử trong mã nguồn:

@ThongTinChucNang(moTa = "Chức năng chính")
public class LoaiChucNang {
    @GhiChuPhuongThuc
    public void ThucThiChucNang() {
        // Nội dung phương thức
    }
}

Xử lý chú thích

Với chú thích có phạm vi RUNTIME, có thể truy xuất thông qua phản chiếu:

import java.lang.reflect.Method;

public class XuLyChuThich {
    public static void main(String[] args) {
        LoaiChucNang obj = new LoaiChucNang();
        for (Method method : obj.getClass().getDeclaredMethods()) {
            if (method.isAnnotationPresent(GhiChuPhuongThuc.class)) {
                System.out.println("Phương thức " + method.getName() + " có chú thích");
            }
        }
    }
}

Chú thích tích hợp sẵn

Java cung cấp một số chú thích cơ bản:

  • @Override: Đánh dấu phương thức ghi đè
  • @Deprecated: Báo hiệu phần tử đã lỗi thời
  • @SuppressWarnings: Ứng chế cảnh báo trình biên dịch
@Deprecated
public class LopCu {
    public void PhuongThucCu() {
        // Triển khai
    }
}

public class LopMoi {
    @Override
    @SuppressWarnings("deprecation")
    public void PhuongThucCu() {
        // Ghi đè phương thức
    }
}

Thẻ: Java JVM Reflection Annotation Processing

Đăng vào ngày 20 tháng 5 lúc 05:00