2013-07-28 26 views
31

böyle kendi ek açıklama türünü yarattık:Java ders notu nasıl eklenir?

public @interface NewAnnotationType {} 

ve sınıfa bağlı:

@NewAnnotationType 
public class NewClass { 
    public void DoSomething() {} 
} 

ve böyle yansıma yoluyla sınıf ek açıklamayı almaya çalıştı:

Class newClass = NewClass.class; 

for (Annotation annotation : newClass.getDeclaredAnnotations()) { 
    System.out.println(annotation.toString()); 
} 

ancak hiçbir şey yazdırmıyor. Neyi yanlış yapıyorum?

+1

yüzden bir ek açıklama derleme sırasında kullanılabilir. –

cevap

38

varsayılan saklama politikası varsayılan olarak, açıklama bilgileri zamanında tutulmaz, yani RetentionPolicy.CLASS geçerli:

derleyici tarafından sınıf dosyasında kaydedilecek ancak tarafından tutulan gerekmez Açıklamalar

VM çalışma zamanında. Bu varsayılan davranıştır.

Açıklamalar derleyici tarafından sınıf dosyasında kaydedilir ve çalışma zamanında VM tarafından muhafaza edilecek, bu yüzden düşünceli okunabilir:

Bunun yerine, RetentionPolicy.RUNTIME kullanın. Eğer @Retention meta-annotation kullanarak belirtmek

...: açıkça işaretlenmiş sürece

@Retention(RetentionPolicy.RUNTIME) 
public @interface NewAnnotationType { 
} 
+0

Tamam, bunu nasıl değiştirebiliriz? –

+1

yeniden oluşturulduktan sonra çalışır :) teşekkürler –

+1

[Bu benim için çalışıyor.] (Http://ideone.com/AMTHsM) –

İlgili konular