2010-09-26 34 views
15

tôi đã thực hiện một chú giải tùy chỉnh cho dự án của tôi mà sẽ chỉ được sử dụng với các lĩnh vực, đó làTiếp cận chú thích lĩnh vực

@MyAnnotation int myVariable

Tôi có một lớp học mà sẽ chịu trách nhiệm thực hiện một số hành động theo các biến thể Các dự án có một số lớp chưa được xác định với các chú thích được bao gồm. Làm thế nào tôi có thể truy cập chúng bằng cách sử dụng bộ xử lý chú thích của tôi để truy cập các giá trị?

Tôi có thể kiểm tra các biến được chú thích mặc dù mỗi lớp, nhưng không sửa đổi giá trị vì không phải là đối tượng.

bất kỳ đề xuất nào về cách thực hiện?

Cảm ơn trước !! :)

+0

Tôi cũng tìm thấy [link] (http://stackoverflow.com/questions/13875029/how-do-i-get-all-fields-and-properties-of-an-object- that-are-annotated-with-spec) tương tự như câu hỏi của bạn – Fritz

+0

Câu trả lời được chấp nhận trước đó của tôi được liệt kê vẫn có sẵn (tại thời điểm viết nhận xét này) bài viết có tiêu đề "[Cách chú thích hoạt động] (http://www.objectpartners.com/2010/08/06/how-do-annotations-work /) ". –

Trả lời

19
int getMyVariable(Foo foo) throws IllegalArgumentException, IllegalAccessException{ 
for(Field f:foo.getClass().getDeclaredFields()){ 
    /** 
    * Ensure the RetentionPolicy of 'MyAnnotation' is RUNTIME. 
    */ 
    if(f.isAnnotationPresent(MyAnnotation.class)){ 
    return f.getInt(foo); 
    } 
} 
return -1; 
} 
+0

Tốt cho việc tìm kiếm các trường, nhưng đôi khi chú thích nằm trên phương thức truy cập. – cosbor11

+0

Còn các trường riêng tư thì sao? Tôi tin rằng điều này không làm việc ... –

+0

Remi D: Trường tư nhân không phải là một vấn đề, bạn chỉ cần gọi field.setAccessible (true); –

Các vấn đề liên quan