java @interface 註解詳解及實例

java @interface 註解詳解及實例

1 簡介

在Java中,定義註解其實和定義接口差多不,只需要在interface前添加一個@符號就可以,即 @interface Zhujie{ },這就表明我們定義了一個名爲 @Zhujie 的註解。註解中的每一個方法定義了這個註解類型的一個元素,特別注意:註解中方法的聲明中一定不能包含參數,也不能拋出異 常;方法的返回值被限制爲簡單類型、String、Class、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 使用示例

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

1

2

3

4

public @interface Coder {

   int personId();

   String company() default "[unassigned]";

}

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

1

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

沒有元素或者方法的註解被稱爲“標記(marker)”類型,例如:

1

public @interface Coder {}

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

1

2

3

public @interface Coder {

   String value();

}

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

1

@Coder("YeePay")

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

轉自:https://www.jb51.net/article/115262.htm

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