您好,登錄后才能下訂單哦!
本篇內容介紹了“@Target注解,@Retention元注解和@Documented注解的使用方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
@Target --用于定義在注解的上邊,表明該注解可以使用的范圍。
(1)進入源碼后是這樣的:
public @interface Target { ElementType[] value(); }
可以看出取值是一個數組,表明value可以取一個值,也可以取多個值。當取多值時,需用英文逗號隔開。
(2)進入到ElementType,是一個枚舉類型:
public enum ElementType { TYPE, //表明此注解可以用在類或接口上 FIELD, //表明此注解可以用在域上(還沒用過,) METHOD, //表明此注解可以用在方法上 PARAMETER, //表明此注解可以用在參數上 CONSTRUCTOR, //表明此注解可以用在構造方法上 LOCAL_VARIABLE, //表明此注解可以用在局部變量上 ANNOTATION_TYPE, //表明此注解可以用在注解類型上 PACKAGE, //用于記錄java文件的package文件信息, 不使用在一般的類中,而用在固定文件package-info.java中。 注意命名一定是“package-info”。 由于package- info.java并不是一個合法的類, 使用eclipse創建類的方式會提示不合法,所以需要以創建 文件的方式來創建package-info.java。 TYPE_PARAMETER, //類型參數聲明 TYPE_USE //類型使用聲明 (未使用過,也不知道怎么用) }
以下是關于Eclipse中無法創建package-info包的證明:
package-info.PNG
若@Target注解未指定value值,則表明被@Target修飾的注解可以用于任何范圍。
注解@Retention可以用來修飾注解,是注解的注解,稱為元注解。
Retention注解有一個屬性value,是RetentionPolicy類型的,Enum RetentionPolicy是一個枚舉類型,
這個枚舉決定了Retention注解應該如何去保持,也可理解為Rentention 搭配 RententionPolicy使用。RetentionPolicy有3個值:CLASS RUNTIME SOURCE
按生命周期來劃分可分為3類:
1、RetentionPolicy.SOURCE:注解只保留在源文件,當Java文件編譯成class文件的時候,注解被遺棄;
2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加載class文件時候被遺棄,這是默認的生命周期;
3、RetentionPolicy.RUNTIME:注解不僅被保存到class文件中,jvm加載class文件之后,仍然存在;
這3個生命周期分別對應于:Java源文件(.java文件) ---> .class文件 ---> 內存中的字節碼。
那怎么來選擇合適的注解生命周期呢?
首先要明確生命周期長度 SOURCE < CLASS < RUNTIME ,所以前者能作用的地方后者一定也能作用。
一般如果需要在運行時去動態獲取注解信息,那只能用 RUNTIME 注解,比如@Deprecated使用RUNTIME注解
如果要在編譯時進行一些預處理操作,比如生成一些輔助代碼(如 ButterKnife),就用 CLASS注解;
如果只是做一些檢查性的操作,比如 @Override 和 @SuppressWarnings,使用SOURCE 注解。
注解@Override用在方法上,當我們想重寫一個方法時,在方法上加@Override,當我們方法的名字出錯時,編譯器就會報錯
注解@Deprecated,用來表示某個類或屬性或方法已經過時,不想別人再用時,在屬性和方法上用@Deprecated修飾
注解@SuppressWarnings用來壓制程序中出來的警告,比如在沒有用泛型或是方法已經過時的時候
@Documented注解
Documented注解表明這個注釋是由 javadoc記錄的,在默認情況下也有類似的記錄工具。 如果一個類型聲明被注釋了文檔化,它的注釋成為公共API的一部分。
“@Target注解,@Retention元注解和@Documented注解的使用方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。