天天看點

java 注解 多個target_Java之四大元注解@Target、@Retention、@Documented、@Inherited

什麼叫做元注解??   ==》用于注解【注釋】的注解就叫做元注解

注解叫做:中繼資料,标簽,注釋           元注解[資料]--->注解--->标記代碼

[email protected] :用于描述注解的使用範圍,也就是說使用了@Target去定義一個注解,那麼可以決定定義好的注解能用在什麼地方

[email protected]:用于描述注解的生命周期,也就是說這個注解在什麼範圍内有效,注解的生命周期和三個階段有關:源代碼階段、CLASS檔案中有效、運作時有效,故其取值也就三個值,分别代表着三個階段

[email protected]:表示該注解是否可以生成到 API文檔中。在該注解使用後,如果導出API文檔,會将該注解相關的資訊可以被例如javadoc此類的工具文檔化。 注意:Documented是一個标記注解,沒有成員。

[email protected]:使用@Inherited定義的注解具備繼承性

假設一個注解在定義時,使用了@Inherited,然後該注解在一個類上使用,如果這個類有子類,那麼通過反射我們可以從類的子類上擷取到同樣的注解、

/**

* Java四大元注解:

* [email protected] :用于描述注解的使用範圍,也就是說使用了@Target去定義一個注解,那麼可以決定定義好的注解能用在什麼地方

* 内部值:ElementType[] value()數組, value值類型 ElementType枚舉類型

* 元注解中的枚舉值決定了,一個注解可以标記的範圍

* TYPE : 類型上面 用于描述類、接口(包括注解類型) 或enum聲明

* FIELD : 用于描述字段

* METHOD :方法

* PARAMETER : 參數 【參數名】

* CONSTRUCTOR : 構造方法

* LOCAL_VARIABLE : 局部變量

* ANNOTATION_TYPE : 可以打在注解上面

* PACKAGE :可以打在包上面

* TYPE_PARAMETER : 參數類型【形式參數類型】

* TYPE_USE : 任何位置都可以

* [email protected]:用于描述一個注解存在的生命周期【源碼,位元組碼檔案,運作時】

* 内部值:RetentionPolicy value();非數組,意味着隻能一個值:

* 值類型:枚舉值RetentionPolicy:幾個值決定了幾個狀态:如下幾個值

* SOURCE :表示一個注解可以存在于源碼中==>java的源碼中

* CLASS :表示 一個注解可以在源碼中,并且可以在位元組碼檔案中

* RUNTIME :表示 一個注解可以在源碼、位元組碼、及運作時期該注解都會存在

* [email protected] :表示該注解是否可以生成到 API文檔中 ==》即生成API文檔的時 檢驗

* [email protected] :表示一個【注解】能夠被繼承

* 不是說注解與注解之間能否互相繼承

* 而是說:一個類A被注解了,那麼另外一個類B,繼承了A類

* B類能夠繼承到A類中,的注解 (即被@Inherited注解過的注解)

* @author 鄭清

——————————————————————————————————————————————

@Documented 注解表明這個注解應該被 javadoc工具記錄. 預設情況下,javadoc是不包括注解的. 但如果聲明注解時指定了 @Documented,則它會被 javadoc 之類的工具處理, 是以注解類型資訊也會被包括在生成的文檔中,是一個标記注解,沒有成員。

源碼

java 注解 多個target_Java之四大元注解@Target、@Retention、@Documented、@Inherited

使用方法

java 注解 多個target_Java之四大元注解@Target、@Retention、@Documented、@Inherited

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface Column {

public String name() default "fieldName";

public String setFuncName() default "setField";

public String getFuncName() default "getField";

public boolean defaultDBValue() default false;

}

java 注解 多個target_Java之四大元注解@Target、@Retention、@Documented、@Inherited

—————————