Java 元注解


注解(Annontion)是Java5開始引入的新特征。它提供了一種安全的類似注釋的機制,用來將任何的信息或元數據(metadata)與程序元素(類、方法、成員變量等)進行關聯。

1、元注解

      元注解的作用就是負責注解其他注解。Java5.0定義了4個標准的meta-annotation類型,它們被用來提供對其它 annotation類型作說明。Java5.0定義的元注解有以下幾種:

  • @Target
  • @Retention
  • @Documented
  • @Inherited

1.1 @Target

  用於描述注解的范圍,即注解在哪用。它說明了Annotation所修飾的對象范圍:Annotation可被用於 packages、types(類、接口、枚舉、Annotation類型)、類型成員(方法、構造方法、成員變量、枚舉值)、方法參數和本地變量(如循環變量、catch參數)等。取值類型(ElementType)有以下幾種:

  1.   CONSTRUCTOR:用於描述構造器
  2.   FIELD:用於描述域即類成員變量
  3.   LOCAL_VARIABLE:用於描述局部變量
  4.   METHOD:用於描述方法
  5.   PACKAGE:用於描述包
  6.   PARAMETER:用於描述參數
  7.   TYPE:用於描述類、接口(包括注解類型) 或enum聲明
  8.   TYPE_PARAMETER:1.8版本開始,描述類、接口或enum參數的聲明
  9.   TYPE_USE:1.8版本開始,描述一種類、接口或enum的使用聲明

示例:

@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Log {
    ......
}

上述表示Log注解可以用在類、接口、enum和方法上

1.2 @Retention

  用於描述注解的生命周期,表示需要在什么級別保存該注解,即保留的時間長短。取值類型(RetentionPolicy)有以下幾種:

  1.   SOURCE:在源文件中有效(即源文件保留)
  2.   CLASS:在class文件中有效(即class保留)
  3.   RUNTIME:在運行時有效(即運行時保留)

示例:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {
  ......
}

上述示例使用RetentionPolicy.RUNTIME,這樣注解處理器可以通過反射,獲取到該注解的屬性值,從而去做一些運行時的邏輯處理。

1.3 @Documented

  用於描述其它類型的annotation應該被作為被標注的程序成員的公共API,因此可以被例如javadoc此類的工具文檔化。它是一個標記注解,沒有成員。

示例:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented public @interface Log {
  ......
}

1.4 @Inherited

  用於表示某個被標注的類型是被繼承的。如果一個使用了@Inherited修飾的annotation類型被用於一個class,則這個annotation將被用於該class的子類。

 


免責聲明!

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



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