什么是注解
注解,就是對某一事物進行添加注釋說明,會存放一些信息,這些信息可能對以后某個時段來說是很有用處的。 Java注解又叫java標注,java提供了一套機制,使得我們可以對方法、類、參數、包、域以及變量等添加標准(即附上某些信息)。且在以后某個時段通過反射將標注的信息提取出來以供使用。
自定義Java標注
為什么要自定義注解
Java從1.5版本以后默認內置三個標注:
@Override:只能用在方法之上的,用來告訴別人這一個方法是改寫父類的。
@Deprecated:建議別人不要使用舊的API的時候用的,編譯的時候會用產生警告信息,可以設定在程序里的所有的元素上.
@SuppressWarnings:這一個類型可以來暫時把一些警告信息消息關閉.
如何自定義注解
自定義步驟大致分為兩步: 1), 通過@interface關鍵字(注意,不是interface,是@interface)聲明注解名稱,以及注解的成員屬性或者叫做注解的參數。 2), 使用java內置的四個元注解對這個自定義標注的功能和范圍進行一些限制 問題來了,什么是元注解?
元注解
元注解,就是定義注解的注解,也就是說這些元注解是的作用就是專門用來約束其它注解的注解。請區別上面那三個注解,他們也是通過元注解定義而來的。 元注解有哪些呢,主要有四個@Target,@Retention,@Documented,@Inherited
1.@Target, 2.@Retention, 3.@Documented, 4.@Inherited
@Target 表示該注解用於什么地方,可能的 ElemenetType 參數包括:
ElemenetType.CONSTRUCTOR 構造器聲明
ElemenetType.FIELD 域聲明(包括 enum 實例)
ElemenetType.LOCAL_VARIABLE 局部變量聲明
ElemenetType.METHOD 方法聲明
ElemenetType.PACKAGE 包聲明
ElemenetType.PARAMETER 參數聲明
ElemenetType.TYPE 類,接口(包括注解類型)或enum聲明
@Retention 表示在什么級別保存該注解信息。可選的 RetentionPolicy 參數包括:
RetentionPolicy.SOURCE 注解將被編譯器丟棄
RetentionPolicy.CLASS 注解在class文件中可用,但會被VM丟棄
RetentionPolicy.RUNTIME VM將在運行期也保留注釋,因此可以通過反射機制讀取注解的信息。
@Documented 將此注解包含在 javadoc 中
@Inherited 允許子類繼承父類中的注解