Searchable.javagetAnnotations Reflection() trả về null
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Searchable { }
Obj.java
public class Obj {
@Searchable
String myField;
}
void main (String [] args)
Annotation[] annotations = Obj.class.getDeclaredField("myField").getAnnotations();
Tôi mong đợi annotations
sẽ chứa số @Searchable
của tôi. Mặc dù nó là null
. Theo tài liệu, phương pháp này:
Trả về tất cả chú thích có trên phần tử này. (Trả về một mảng có độ dài bằng không nếu phần tử này không có chú thích.) Người gọi của phương thức này là miễn phí để sửa đổi mảng được trả về; nó sẽ không ảnh hưởng đến các mảng được trả lại cho những người gọi khác.
Điều gì thậm chí còn kỳ lạ hơn (với tôi), vì nó trả về null
thay vì Annotation[0]
.
Tôi đang làm gì sai ở đây và quan trọng hơn, làm cách nào để tôi có thể nhận được Annotation
của mình?
Dường như hoạt động trên máy của tôi. Phiên bản Java bạn đang sử dụng khi chạy là gì? Bạn có thể kiểm tra dòng '@Retention (RetentionPolicy.RUNTIME)' không tồn tại trên chú thích tùy chỉnh của bạn không? Làm thế nào để bạn biết nó trả về 'null'? Bạn có thể cung cấp đoạn mã bạn đang sử dụng không? – sp00m
Chính xác. Làm việc với JDK 1.7.0. –
@ sp00m Tôi đã sao chép từ IDE, RUNTIME có sẵn. Tôi biết nó trả về null kể từ khi tôi gỡ lỗi nó. Tôi đang sử dụng JDK 1.7.0. – Aquillo