2016-08-15 45 views
2

我想用簡單的註解來annotite Java包:如何註釋Java包和反映的元數據

@Target(ElementType.PACKAGE) 
public @interface Related { 
    int apiVersion() default 0; 
} 

然而,當我嘗試將其添加到任何包我有編譯錯誤

Error:(1, 14) java: cannot find symbol 
    symbol: class Related 
    location: package com.test.xxx 

任何幫助表示讚賞!

編輯

搜索了一下後,我也發現了這種錯誤的

Error:(1, 1) java: package annotations should be in file package-info.java 
+0

反映包的名字有唯一一家通過comiler產生的錯誤? – vsminkov

+1

感謝您快速回答!不,我發現另一個 - 「錯誤:(1,1)java:包註釋應該在文件package-info.java' – user6719582

回答

1

爲了能夠把註釋上包你應該創建package-info.java文件,它應該包含這樣的包定義:

@Related 
package tld.some.name; 

爲了能夠反映反射包,您還需要設置RetentionPolicy.RUNTIME

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.PACKAGE) 
public @interface Related { 
    // stuff... 
} 

然後你終於可以反映包:

SomeClassInPackage.class.getPackage().getAnnotation(Related.class) 

您也可以使用java.lang.Package

Package.getPackage("tld.some.name").getAnnotation(Related.class) 
+0

但是我怎樣才能反映基於字符串包名稱的包? – user6719582

+0

@ user6719582我會更新我的回答 – vsminkov

+0

@ user6719582完成! – vsminkov