2014-09-23 60 views
2

所以我想學習使用自定義註釋的基礎,所以我已經創建了一個空的註釋:爲什麼java不能看到我的註釋?

public @interface CallMe { 

} 

Test類:

import java.lang.annotation.*; 

@CallMe 
public class Test { 
    public static void main(String[] args) throws Exception { 
     Annotation[] annotations = Test.class.getAnnotations(); 

     if (Test.class.isAnnotationPresent(CallMe.class)) { 
      System.out.println("CallMe is present."); 
     } 

     System.out.println("Found " + annotations.length + " annotations."); 

     for (Annotation a: annotations) { 
      System.out.println("Annotation: " + a); 
     } 
    } 
} 

我編譯的類和執行Test ,但:

$ javac Test.java CallMe.java 
$ java Test 
Found 0 annotations. 

我使用OpenJDK 1.6進行此測試,如果它很重要。我對.getAnnotations().getDeclaredAnnotations()都有好感,但沒有結果。

爲什麼Java不能找到註釋? (如果你想知道,我最初會嘗試註釋方法,這就是爲什麼我做了CallMe,但我認爲首先要做一個類級別的例子比較容易)。

回答

3

你需要註釋的註釋類像這樣讓你的註釋信息可在運行時:

@Retention(RetentionPolicy.RUNTIME) 
public @interface CallMe { 

} 
2

嘗試:

@Retention(RetentionPolicy.RUNTIME) 
@Target({ElementType.TYPE}) 
public @interface CallMe { 
... 
} 
+0

+1謝謝,目標也是有用的瞭解。 – FatalError 2014-09-23 17:22:44

相關問題