java中的註解及元註解

JAVA中的註解java

 

 

四種元註解:jvm

    元註解:註解的註解,即java爲註解開發特准備的註解。函數

     ①: @Target表示該註解用於什麼地方工具

 

@Target:註解的做用目標spa

        

        @Target(ElementType.TYPE)   //接口、類、枚舉、註解.net

        @Target(ElementType.FIELD) //字段、枚舉的常量繼承

        @Target(ElementType.METHOD) //方法接口

        @Target(ElementType.PARAMETER) //方法參數開發

        @Target(ElementType.CONSTRUCTOR)  //構造函數文檔

        @Target(ElementType.LOCAL_VARIABLE)//局部變量

        @Target(ElementType.ANNOTATION_TYPE)//註解

        @Target(ElementType.PACKAGE) /// 

 

 

@Documented

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.ANNOTATION_TYPE)

public @interface Target {

ElementType[] value();

}

public enum ElementType {

    /** 類,接口(包括註解類型)或enum聲明  */

    TYPE,

    /** 域聲明(包括 enum 實例) */

    FIELD,

    /** 方法聲明 */

    METHOD,

    /** 參數聲明 */

    PARAMETER,

    /** 構造器聲明 */

    CONSTRUCTOR,

    /** 局部變量聲明  */

    LOCAL_VARIABLE,

    /** Annotation type declaration */

    ANNOTATION_TYPE,

    /**  包聲明  */

    PACKAGE,

    /**

     * 類型參數聲明

     * @since 1.8

     */

    TYPE_PARAMETER,

    /**

     * 類型的使用

     * @since 1.8

     */

    TYPE_USE

}

 

 

.@Retention:: 表示該註解能夠保存的範圍

@Documented

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.ANNOTATION_TYPE)

public @interface Retention {

 

    RetentionPolicy value();

}

public enum RetentionPolicy {

    /**

     * 源代碼:即此註解只能保存在源代碼中

     * 當編譯時,會被丟棄

     */

    SOURCE,

 

   /**

     * class文件:即此註解能夠在class文件中保留

     * 但會被jvm丟棄

     */

    CLASS,

 

   /**

     * 運行期:即此註解能夠在運行時保留

     * 能夠經過反、反射得到

     */

    RUNTIME

}

註解@Retention能夠用來修飾註解,是註解的註解,稱爲元註解。
Retention註解有一個屬性value,是RetentionPolicy類型的,Enum RetentionPolicy是一個枚舉類型,
這個枚舉決定了Retention註解應該如何去保持,也可理解爲Rentention 搭配 RententionPolicy使用。RetentionPolicy3個值:CLASS  RUNTIME   SOURCE
@Retention(RetentionPolicy.CLASS)修飾的註解,表示註解的信息被保留在class文件(字節碼文件)中當程序編譯時,但不會被虛擬機讀取在運行的時候;
@Retention(RetentionPolicy.SOURCE )修飾的註解,表示註解的信息會被編譯器拋棄,不會留在class文件中,註解的信息只會留在源文件中;
@Retention(RetentionPolicy.RUNTIME )修飾的註解,表示註解的信息被保留在class文件(字節碼文件)中當程序編譯時,會被虛擬機保留在運行時,
因此他們能夠用反射的方式讀取。RetentionPolicy.RUNTIME 能夠讓你從JVM中讀取Annotation註解的信息,以便在分析程序的時候使用.

 

 

@Documented  :: 即擁有這個註解的元素能夠被javadoc此類的工具文檔化。它表明着此註解會被javadoc工具提取成文檔。在doc文檔中的內容會由於此註解的信息內容不一樣而不一樣。至關與@return,@param 等。

 

@Documented

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.ANNOTATION_TYPE)

public @interface Documented {

}

 

@Inherited : 容許子類繼承父類中的註解。即擁有此註解的元素其子類能夠繼承父類的註解。

 

@Documented

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.ANNOTATION_TYPE)

public @interface Inherited {

}

 

@Interface

 

 

@interface 不是interface,是註解類

 

jdk1.5以後加入的,java沒有給它新的關鍵字,因此就用@interface 這麼個東西表示了

這個註解類,就是定義一個可用的註解

相關文章
相關標籤/搜索