Java 四大元註解@Target、@Retention、@Documented、@Inherited

什麼叫做元註解??   ==》用於註解【註釋】的註解就叫做元註解
註解叫做:元數據,標籤,註釋           元註解[數據]--->註解--->標記代碼

1.@Target 用於描述註解的使用範圍,也就是說使用了@Target去定義一個註解,那麼可以決定定義好的註解能用在什麼地方
2.@Retention用於描述註解的生命週期,也就是說這個註解在什麼範圍內有效,註解的生命週期和三個階段有關:源代碼階段、CLASS文件中有效、運行時有效,故其取值也就三個值,分別代表着三個階段
3.@Documented表示該註解是否可以生成到 API文檔中。在該註解使用後,如果導出API文檔,會將該註解相關的信息可以被例如javadoc此類的工具文檔化。 注意:Documented是一個標記註解,沒有成員。
4.@Inherited使用@Inherited定義的註解具備繼承性
假設一個註解在定義時,使用了@Inherited,然後該註解在一個類上使用,如果這個類有子類,那麼通過反射我們可以從類的子類上獲取到同樣的註解、

/**
 * Java四大元註解:
 * 1.@Target :用於描述註解的使用範圍,也就是說使用了@Target去定義一個註解,那麼可以決定定義好的註解能用在什麼地方
 *    內部值:ElementType[]  value()數組, value值類型   ElementType枚舉類型
 *    元註解中的枚舉值決定了,一個註解可以標記的範圍
 *      TYPE : 類型上面  用於描述類、接口(包括註解類型) 或enum聲明
 *      FIELD : 用於描述字段
 *      METHOD :方法
 *      PARAMETER : 參數 【參數名】
 *      CONSTRUCTOR : 構造方法
 *      LOCAL_VARIABLE : 局部變量
 *      ANNOTATION_TYPE : 可以打在註解上面
 *      PACKAGE :可以打在包上面
 *      TYPE_PARAMETER : 參數類型【形式參數類型】
 *      TYPE_USE : 任何位置都可以
 * 2.@Retention:用於描述一個註解存在的生命週期【源碼,字節碼文件,運行時】
 *         內部值:RetentionPolicy value();非數組,意味着只能一個值:
 *         值類型:枚舉值RetentionPolicy:幾個值決定了幾個狀態:如下幾個值
 *         SOURCE :表示一個註解可以存在於源碼中==>java的源碼中
 *      CLASS :表示 一個註解可以在源碼中,並且可以在字節碼文件中
 *      RUNTIME :表示 一個註解可以在源碼、字節碼、及運行時期該註解都會存在
 * 3.@Document :表示該註解是否可以生成到 API文檔中 ==》即生成API文檔的時 檢驗
 * 4.@Inherited :表示一個【註解】能夠被繼承
 *         不是說註解與註解之間能否相互繼承
 *    而是說:一個類A被註解了,那麼另外一個類B,繼承了A類
 *       B類能夠繼承到A類中,的註解 (即被@Inherited註解過的註解)


原文鏈接:https://blog.csdn.net/qq_38225558/article/details/82728539

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章