下面的內容轉載於http://www.tmser.com/?post=34&page=2以備忘。
所有註解都自動繼承於java.lang.annotation.Annotation,java提供了四個元註解,分別是:@Target,@Retention,@Documented,@Inherited ,再次強調下元註解是java API提供,是專門用來定義註解的註解,其作用分別如下。
@Target 表示該註解用於什麼地方,可能的值在枚舉類 ElemenetType 中,包括:
ElemenetType.CONSTRUCTOR 構造器聲明
ElemenetType.FIELD 域聲明(包括 enum 實例)
ElemenetType.LOCAL_VARIABLE 局部變量聲明
ElemenetType.METHOD 方法聲明
ElemenetType.PACKAGE 包聲明
ElemenetType.PARAMETER 參數聲明
ElemenetType.TYPE 類,接口(包括註解類型)或enum聲明
@Retention 表示在什麼級別保存該註解信息。可選的參數值在枚舉類型 RetentionPolicy 中,包括:
RetentionPolicy.SOURCE 註解將被編譯器丟棄,如如java API提供的SuppressWarnings
RetentionPolicy.CLASS 註解在class文件中可用,但會被VM丟棄
RetentionPolicy.RUNTIME VM將在運行期也保留註釋,因此可以通過反射機制讀取註解的信息。
@Documented 該元Annotation修飾的Annotation類將被javadoc工具提取成文檔,如果定義Annotation類時使用了@Documented修飾,則所有使用該Annotation修飾的程序元素在API文檔中將會包含該Annotation說明。
@Inherited 允許子類繼承父類中的註解,被該元註解修飾的註解只對class類類型有效,且僅僅是註解被繼承。
附件是一個依賴注入的簡單例子,使用java註解和反射實現,開發平臺是windows7,java6,myeclipse8