java @interface 注解詳解及實例
java @interface 注解詳解及實例
1 簡介
在Java中,定義注解其實和定義接口差多不,只需要在interface前添加一個@符號就可以,即 @interface Zhujie{ },這就表明我們定義了一個名為 @Zhujie 的注解。注解中的每一個方法定義了這個注解類型的一個元素,特別注意:注解中方法的聲明中一定不能包含參數(shù),也不能拋出異 常;方法的返回值被限制為簡單類型、String、Class、emnus、注釋,和這些類型的數(shù)組,但方法可以有一個缺省值。
注解相當(dāng)于一種標(biāo)記,在程序中加上了注解就等于為程序加上了某種標(biāo)記,JAVAC編譯器、開發(fā)工具和其他程序可以用反射機制來了解咱們的類以及各種元素上有無標(biāo)記,如果找到標(biāo)記,就做相應(yīng)的事。例如,@Deprecated可以標(biāo)記在一些不建議被使用的類、方法和字段上,如果有人使用了,就給出警告。
2 元注解
注解 @Retention 可以用來修飾注解,是注解的注解,稱為元注解。Retention注解有一個屬性value,是RetentionPolicy類型的,而Enum RetentionPolicy是一個枚舉類型,這就決定了Retention注解應(yīng)該如何去操作,也可以理解為Rentention 搭配 RententionPolicy來使用。RetentionPolicy有3個值,分別為:CLASS 、RUNTIME 和 SOURCE。
- 用@Retention(RetentionPolicy.CLASS)修飾的注解,表示注解的信息被保留在class文件(字節(jié)碼文件)中當(dāng)程序編譯時,但不會被虛擬機讀取在運行的時候;
- 用@Retention(RetentionPolicy.SOURCE)修飾的注解,表示注解的信息會被編譯器拋棄,不會留在class文件中,注解的信息只會留在源文件中;
- 用@Retention(RetentionPolicy.RUNTIME)修飾的注解,表示注解的信息被保留在class文件(字節(jié)碼文件)中,當(dāng)程序編譯時,會被虛擬機保留在運行時。
3 使用示例
首先,創(chuàng)建一個簡單的注解:
public @interface Coder {
int personId();
String company() default "[unassigned]";
}
注解定義完之后,咱們就可以用來作注釋聲明。注解是一種特殊的修飾符,在其他修飾符(例如,public、static 或者 final 等)使用地方都可以使用注解。按照慣例,注解應(yīng)該放在其他修飾符的前面。注解的聲明用@符號后面跟上這個注解類型的名字,再后面加上括號,括號中列出這個注釋中元素或者方法的key-value對,其中,值必須是常量。例如:
@coder(personId=20151120,company="YeePay")
沒有元素或者方法的注解被稱為“標(biāo)記(marker)”類型,例如:
public @interface Coder {}
標(biāo)記注解在使用的時候,其后面的括號可以省略。如果注釋中僅包含一個元素,這個元素的名字應(yīng)該為value,例如:
public @interface Coder {
String value();
}
如果元素的名字為value,那么在使用這個注解的時候,元素的名字和等號都可以省略,例如:
@Coder("YeePay")
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
RabbitMQ的消息確認(rèn)機制的詳細(xì)總結(jié)
RabbitMQ消息確認(rèn)機制指的是在消息傳遞過程中,發(fā)送方發(fā)送消息后,接收方需要對消息進(jìn)行確認(rèn),以確保消息被正確地接收和處理,本文就講給大家詳解介紹RabbitMQ的幾種消息確認(rèn)機制,需要的朋友可以參考下2023-07-07
基于Java反射的map自動裝配JavaBean工具類設(shè)計示例代碼
這篇文章主要給大家介紹了關(guān)于基于Java反射的map自動裝配JavaBean工具類設(shè)計的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧2018-10-10
Java遠(yuǎn)程執(zhí)行shell命令出現(xiàn)java: command not found問題及解決
這篇文章主要介紹了Java遠(yuǎn)程執(zhí)行shell命令出現(xiàn)java: command not found問題及解決方案,具有很好的參考價值,希望對大家有所幫助。2023-07-07
Java使用EasyExcel實現(xiàn)Excel的導(dǎo)入導(dǎo)出
這篇文章主要給大家介紹了關(guān)于Java使用EasyExcel實現(xiàn)Excel的導(dǎo)入導(dǎo)出,在各種系統(tǒng)中,導(dǎo)入導(dǎo)出的數(shù)據(jù)一般都是通過Excel來完成的,需要的朋友可以參考下2023-07-07
spring中在xml配置中加載properties文件的步驟
這篇文章主要介紹了在spring中如何在xml配置中加載properties文件,本文分步驟給大家介紹在XML配置中加載properties文件的方法,需要的朋友可以參考下2023-07-07
Spring使用RestTemplate和Junit單元測試的注意事項
這篇文章主要介紹了Spring使用RestTemplate和Junit單元測試的注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10

