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 允許子類繼承父類中的注解

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM