Tôi đã duyệt qua tài liệu của JDK 7 khi tôi nhận thấy chú thích được gọi là @Target
trong gói java.lang.annotation
. Tiêu đề của lớp đó làLàm cách nào để chú thích có thể là chú thích cho chính nó?
@Documented
@Retention(value=RUNTIME)
@Target(value=ANNOTATION_TYPE)
public @interface Target
Bây giờ, @Target
được sử dụng làm chú thích cho chính nó. Sao có thể như thế được? @Target
được sử dụng trong tiêu đề ngay cả trước khi nó được khai báo. Tôi đã thử điều này với các chú thích tôi đã viết và nó cũng hoạt động tốt. Bất cứ ai có thể giải thích những gì đang xảy ra ở đây?
Tại sao nó không thể thực hiện được? Trình biên dịch có lẽ chỉ phân tích cú pháp lớp trước khi phân tích các chú thích của nó. Lưu ý rằng bạn cũng có thể có các lớp tự tham khảo (ví dụ như một cây đệ quy của các nút), –
chú thích không làm bất cứ điều gì, bạn không nên ngoại trừ lỗi hoặc một cái gì đó mới với quy trình, chúng được sử dụng để phản ánh, ký một thành viên :) –