Tôi đã sử dụng AOP của Guice để chặn một số cuộc gọi phương thức. Lớp của tôi thực hiện một giao diện và tôi muốn chú thích các phương thức giao diện để Guice có thể chọn đúng phương thức. Thậm chí nếu các loại chú thích được chú thích với Inherited chú thích thực hiện lớp không kế thừa các chú thích như đã nêu trong Kế thừa của java doc:Tại sao các lớp java không kế thừa các chú thích từ các giao diện được triển khai?
Cũng lưu ý rằng đây meta-chú thích chỉ gây chú thích là thừa hưởng từ superclasses; chú thích trên giao diện được triển khai không có hiệu lực.
Điều gì có thể là lý do cho điều này? Tìm hiểu tất cả các giao diện mà lớp của đối tượng thực hiện trong thời gian chạy không phải là việc khó để làm như vậy phải có lý do chính đáng đằng sau quyết định này.
chú thích trên giao diện chỉ hữu ích nếu bạn có một khung công tác hỗ trợ chúng.BTW trong ví dụ này getAnnotation() trả về null;) –
Tôi không biết, mọi người. Trong trường hợp này (nếu không có lỗi đánh máy), tôi mong đợi một 'Giá trị trường là mơ hồ.' giống như lỗi trình biên dịch giống như với hai giao diện khai báo cùng một hằng số với các giá trị khác nhau. Tôi biết rằng đây là _not_ một trường, nhưng các giá trị chú thích nhận được tất cả được giải quyết tại thời gian biên dịch, phải không? Tính năng chúng tôi thiếu ở đây sẽ cực kỳ hữu ích trong nhiều trường hợp. Xin lỗi về việc khôi phục một bài đăng cũ, nhân tiện :). –
@Slanec có một cái nhìn tại cách các nguồn Spring để xem cách các chàng trai mùa xuân làm việc xung quanh những vấn đề này. Xem [AnnotationUtils.findAnnotation (method, annotationType)] (http://grepcode.com/file/repo1.maven.org/maven2/org.springframework/spring-core/3.1.1.RELEASE/org/springframework/core/ Chú thích/AnnotationUtils.java # AnnotationUtils.findAnnotation% 28java.lang.reflect.Method% 2Cjava.lang.Class% 29) –