1. 程式人生 > >java註解的基本知識

java註解的基本知識

生命周期 原理 span java內置 rri gpo 中一 eth 註解

1: 註解:Annotation是一種應用於類、方法、參數、變量、構造器及包生命中的特殊修飾符,是一種由JSR-175標準選擇用來描述代碼的元數據。

Java中如下的4種註解,專門負責新註解的創建:

  @Target - 註解應用於什麽地方如果不明確指出,則改註解可以放在任何地方。

  @Inherited - 是否允許子類繼承該註解。

  @Retention - 什麽時候使用該註解定義該註解的生命周期;RetentionPolicy.CLASS表示在類加載的時候丟棄,在字節碼文件的處理中有用,註解默認都使用這種方 式。RetentionPolicy.RUNTIME表示始終不對丟棄,運行期也保留該註釋,因此可以使用反射機制讀取該註解的信息。我們自定義的註解通常使用這種 方式,比如spring的一些註解。

  @Documented - 註解是否包含在JavaDoc中一個簡單的標記註解,標識是否將註解信息添加在java文檔中

java內置的常用註解:

@Override,表示當前的方法定義將覆蓋超類中的方法。

@Deprecated,使用了註解為它的元素編譯器將發出警告,因為註解@Deprecated是不贊成使用的代碼,被棄用的代碼。

@SuppressWarnings,關閉不當編譯器警告信息。

自定義註解:

1 @Target(ElementType.METHOD)
2 @Retention(RetentionPolicy.RUNTIME)
3 public @interface Test {
4  
5 }

除了@符號,註解很像是一個接口。定義註解的時候需要用到元註解,上面用到了@Target和@RetentionPolicy。

在註解中一般會有一些元素以表示某些值。註解的元素看起來就像接口的方法,唯一的區別在於可以為其制定默認值。沒有元素的註解稱為標記註解,上面的@Test就是一個標記註解。

在註解中一般會有一些元素以表示某些值。註解的元素看起來就像接口的方法,唯一的區別在於可以為其制定默認值。沒有元素的註解稱為標記註解,上面的@Test就是一個標記註解。

  註解的可用的類型包括以下幾種:所有基本類型、String、Class、enum、Annotation、以上類型的數組形式。元素不能有不確定的值,即要麽有默認值,要麽在使用註解的時候提供元素的值。而且元素不能使用null作為默認值。註解在只有一個元素且該元素的名稱是value的情況下,在使用註解的時候可以省略“value=”,直接寫需要的值即可。

使用註解最主要的部分在於對註解的處理,那麽就會涉及到註解處理器

從原理上講,註解處理器就是通過反射機制獲取被檢查方法上的註解信息,然後根據註解元素的值進行特定的處理。

  首先最重要的一點是:Annotation是被動的元數據,永遠不會有主動行為

  但凡Annotation起作用的場合都是有一個執行機制/調用者通過反射獲得了這個元數據然後根據它采取行動。在你的例子裏這個執行機制就是測試框架JUnit。你去 慢慢翻JUnit的代碼一定能找到它去查詢被調用的class有沒有某某Annotation,然後如果有就怎麽怎麽樣的代碼


java註解的基本知識