2010-09-26 14 views
15

Ben alanlarla sadece kullanılacaktır Projem için özel bir ek açıklama yaptı, ben değişkenlere göre bazı eylemleri gerçekleştirerek sorumlu olacak başka sınıf varErişim açıklamalı alanları

@MyAnnotation int myVariable

olduğunu Değerler. Proje, ek açıklamalarla birlikte belirsiz sayıda derse sahiptir. Değerlere erişmek için ek not işlemcisi kullanarak onlara nasıl erişebilirim?

Açıklamalı değişkenlerin her bir sınıfa rağmen gittiğini kontrol edebilirim, ancak bir nesne olmadığı için değeri değiştirmiyor olabilir.

Nasıl yapılacağına dair herhangi bir öneri?

Şimdiden teşekkürler! :)

+0

Ben de ([link] bulundu http://stackoverflow.com/questions/13875029/how-do-i-get-all-fields-and-properties-of-an-object- Bu açıklamalı-ile-spec) Sorunuza benzer – Fritz

+0

Daha önce kabul edilmiş cevabım hala listelenmiş (bu yorumun yazıldığı sırada yazılmıştır) başlıklı makale "[Ek açıklamalar nasıl çalışır?] (http://www.objectpartners.com)/2010/08/06/nasıl-do-ek açıklamalar-iş /)". –

cevap

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

Alanları bulmak için iyi, ancak bazen ek açıklama erişimci yöntemindedir. – cosbor11

+0

Peki ya özel alanlar? Bunun işe yaramayacağına inanıyorum ... –

+0

Remi D: Özel alanlar sorun değil, sadece field.setAccessible (true); –

İlgili konular