首頁  >  文章  >  Java  >  java中關於@interface的註解詳解及實例

java中關於@interface的註解詳解及實例

黄舟
黄舟原創
2017-06-04 09:31:311722瀏覽

這篇文章主要介紹了java @interface 註解詳解及實例的相關資料,需要的朋友可以參考下

java @interface 註解詳解及實例

#1 簡介

在Java中,定義註解其實和定義介面差多不,只需要在interface前面加上一個@符號就可以,即@interface Zhujie{ },這就表示我們定義了一個名為@Zhujie 的註解。註解中的每一個方法定義了這個註解類型的一個元素,特別注意:註解中方法的宣告中一定不能包含參數,也不能拋出例外;方法的回傳值被限制為簡單型別、StringClass、emnus、註解,和這些類型的陣列,但方法可以有一個預設值。

註解相當於一種標記,在程式中加上了註解就等於為程式加上了某種標記,JAVAC編譯器、開發工具和其他程式可以用反射機制來了解咱們的類別以及各種元素上有無標記,如果找到標記,就做相應的事。例如,@Deprecated可以標記在一些不建議被使用的類別、方法和欄位上,如果有人使用了,就給予警告。

2 元註解

註解 @Retention 可以用來修飾註解,是註解的註解,稱為元註解。 Retention註解有一個屬性value,是RetentionPolicy類型的,而Enum RetentionPolicy是一個枚舉類型,這就決定了Retention註解應該如何去操作,也可以理解為Rentention 搭配 RententionPolicy來使用。 RetentionPolicy有3個值,分別為:CLASS 、RUNTIME 和 SOURCE。

  1. 用@Retention(RetentionPolicy.CLASS)修飾的註解,表示註解的資訊保留在class檔案(字節碼檔案)中當程式編譯時,但不會被虛擬機器讀取在運作的時候;

  2. 用@Retention(RetentionPolicy.SOURCE)修飾的註解,表示註解的資訊會被編譯器拋棄,不會留在class檔案中,註解的資訊只會留在來源檔案中;

  3. 以@Retention(RetentionPolicy.RUNTIME)修飾的註解,表示註解的資訊被保留在class檔案(字節碼檔案)中,當程式編譯時,會被虛擬機器保留在執行時。

3 使用範例

#首先,建立一個簡單的註解:

public @interface Coder { 
   int personId(); 
   String company() default "[unassigned]";
}

註解定義完之後,咱們就可以用來作註解聲明。註解是一種特殊的修飾符,在其他修飾符(例如,public、staticfinal 等)使用地方都可以使用註解。按照慣例,註解應該放在其他修飾符的前面。註解的宣告用@符號後面跟上這個註解類型的名字,再後面加上括號,括號中列出這個註解中元素或方法的key-value對,其中,值必須是常數。例如:

@coder(personId=20151120,company="YeePay")

沒有元素或方法的註解被稱為「標記(marker)」類型,例如:

public @interface Coder {}

標記註解在使用的時候,其後面的括號可以省略。如果註解中只包含一個元素,這個元素的名字應該為value,例如:

public @interface Coder { 
   String value();
}

如果元素的名字為value,那麼在使用這個註解的時候,元素的名字和等號都可以省略,例如:

@Coder("YeePay")

以上是java中關於@interface的註解詳解及實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn