Java元註解

Java從JDK 5開始引入註解(annotation)。

註解使得Java源代碼中不但可以包含功能性的實現代碼,還可以添加元數據。

註解的功能類似於代碼中的註釋,所不同的是註解不是提供代碼功能的說明,而是實現程序功能的重要組成部分。

Java註解已經在很多框架中得到了廣泛的使用,用來簡化程序中的配置。

下面先來看看java中常用的註解。

一、常用註解

① @Override註解

複製代碼
package java.lang;

import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
複製代碼

@Override註解表示子類要重寫父類的對應方法。

如果方法利用此註釋類型進行註解但沒有重寫超類方法,則編譯器會生成一條錯誤消息。

順便說一句:@override註解在JDK 5環境下只能用於對繼承的類的方法的重寫,實現接口中的方法不能用@override註解。但是JDK1.6可以。

 

② @Deprecated註解

複製代碼
package java.lang;

import java.lang.annotation.*;

@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface Deprecated {
}
複製代碼

 @Deprecated註解表示方法是不被建議使用的。

 

③ @SuppressWarnings註解

複製代碼
package java.lang;

import java.lang.annotation.*;
import java.lang.annotation.ElementType;
import static java.lang.annotation.ElementType.*;

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
    String[] value();
}
複製代碼

 

 @SuppressWarnings註解表示抑制警告。

例如下面的代碼,聲明瞭2個未使用的變量,加上2個@SuppressWarnings來抑制警告。

@SuppressWarnings("unused")
int a=10;
        
@SuppressWarnings({ "rawtypes", "unused" })
List list =new ArrayList();

 

 上面給出了Java自帶的幾個常用的註解,下面先來了解下代碼中出現的諸如@Target,@Retention,@Documented(這些也叫元註解)的意義。

 

二、元註解

 ① @Target

@Target 表示該註解用於什麼地方,可取的值包括:

  • ElemenetType.CONSTRUCTOR       構造器聲明
  • ElemenetType.FIELD          域聲明(包括 enum 實例)
  • ElemenetType.LOCAL_VARIABLE     局部變量聲明
  • ElemenetType.METHOD         方法聲明
  • ElemenetType.PACKAGE         包聲明
  • ElemenetType.PARAMETER       參數聲明
  • ElemenetType.TYPE          類,接口(包括註解類型)或enum聲明
  • ElementType.ANNOTATION_TYPE     註解

 

② @Retention

@Retention 表示在什麼級別保存該註解信息。可選的 RetentionPolicy 參數包括:

  • RetentionPolicy.SOURCE       註解將被編譯器丟棄
  • RetentionPolicy.CLASS        註解在class文件中可用,但會被VM丟棄
  • RetentionPolicy.RUNTIME       JVM將在運行期也保留註釋,因此可以通過反射機制讀取註解的信息。

③ @Documented

@Documented 將此註解包含在 javadoc 中

 

④ @Inherited

@Inherited 允許子類繼承父類中的註解

發佈了2 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章