2013-12-13 77 views
0

我已經在Java中創建一個類爲protected的類中定義的註釋。更具體地說,我正在尋找像Addition這種類型的信息,當然是名稱及其中的字段。閱讀使用反射

回答

2

可以使用Class#getDeclaredClasses()其中

返回Class對象反映聲明該Class 對象所表示的類的成員的所有類和 接口的陣列。

然後,您可以遍歷數組,檢查該類是否爲帶有Class#isAnnotation()的註釋。

public class Driver { 
    public static void main(String[] args) throws Exception { 
     Class<?>[] classes = Driver.class.getDeclaredClasses(); 
     System.out.println(Arrays.toString(classes)); 
     for (Class<?> clazz : classes) { 
      if (clazz.isAnnotation()) { 
       Method[] methods = clazz.getDeclaredMethods(); 
       for (Method method : methods) { 
        System.out.println(method); 
       } 
      } 
     } 
    } 

    @Retention(value=RetentionPolicy.RUNTIME) 
    @Target(value=ElementType.FIELD) 
    protected @interface Addition 
    { 
     String location(); 
    } 
} 

打印

[interface com.spring.Driver$Addition] 
public abstract java.lang.String com.spring.Driver$Addition.location()