Annotation的作用
- 不是程式本身,可以對程式做出解釋,就和注釋類似;
- 可以被其他程式(例如:編譯器)讀取。(注解資訊處理流程,是注解和注釋的重大差別。如果沒有注解資訊的處理流程,則注解毫無意義)
Annotation的格式
- 注解是以“@注釋名”在代碼中存在的,還可以添加一些參數值,例如:
@SuppressWarnings(value="unchecked")
Annotation在哪裡使用?
- 可以附加在package,class,method,field等上面,相當于給它們添加了額外的輔助資訊,我們可以通過反射機制程式設計實作對這些中繼資料的通路。
内置注解
-
-定義在@Override
中,此注釋隻适用于修辭方法,表示一個方法聲明打算重寫超類中的另一個方法聲明。java.lang.Override
-
-定義在@Deprecated
中,此注釋可用于修辭方法,類,屬性,表示不鼓勵程式員使用這樣的元素,通常是因為它很危險或存在更好的選擇。java.lang.Deprecated
-
-定義在@SuppressWarnings
中,用來抑制編譯時的警告資訊。java.lang.SuppressWarnings
元注解
- 元注解的作用就是負責注解其他注解。Java定義個4個标準的meta-annotation類型,它們被用來提供對其它annotation類型作說明
- 這些類型和他們所支援的類在java.lang.annotation包中可以找到
@Target
@Retention
@Documented
@Inherited
@Target – 表示該注解用于什麼地方。如果不明确指出,該注解可以放在任何地方。以下是一些可用的參數。需要說明的是:屬性的注解是相容的,如果你想給7個屬性都添加注解,僅僅排除一個屬性,那麼你需要在定義target包含所有的屬性。
- ElementType.TYPE:用于描述類、接口或enum聲明
- ElementType.FIELD:用于描述執行個體變量
- ElementType.METHOD
- ElementType.PARAMETER
- ElementType.CONSTRUCTOR
- ElementType.LOCAL_VARIABLE
- ElementType.ANNOTATION_TYPE 另一個注釋
- ElementType.PACKAGE 用于記錄java檔案的package資訊
@Retention– 定義該注解的生命周期。
- RetentionPolicy.SOURCE – 在編譯階段丢棄。這些注解在編譯結束之後就不再有任何意義,是以它們不會寫入位元組碼。@Override, @SuppressWarnings都屬于這類注解。
- RetentionPolicy.CLASS – 在類加載的時候丢棄。在位元組碼檔案的進行中有用。注解預設使用這種方式。
- RetentionPolicy.RUNTIME– 始終不會丢棄,運作期也保留該注解,是以可以使用反射機制讀取該注解的資訊。我們自定義的注解通常使用這種方式。
@Documented–一個簡單的Annotations标記注解,表示是否将注解資訊添加在java文檔中。
@Inherited – 定義該注釋和子類的關系
自定義注解
自定義注解的簡單講解(使用注解的方式将javabean類轉換為資料庫表)