什麼叫做元注解?? ==》用于注解【注釋】的注解就叫做元注解
注解叫做:中繼資料,标簽,注釋 元注解[資料]--->注解--->标記代碼
[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 之類的工具處理, 是以注解類型資訊也會被包括在生成的文檔中,是一個标記注解,沒有成員。
源碼
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iM3ETO3QTY5IzN2gzMzITN3UTYlZTY3U2N5YmYidDNw8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
使用方法
@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;
}
—————————