自定義注解

創(chuàng)建Java自定義注解

創(chuàng)建自定義注解和創(chuàng)建一個接口相似,但是注解的interface關(guān)鍵字需要以@符號開頭。我們可以為注解聲明方法。我們先來看看注解的例子,然后我們將討論他的一些特性。

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/*-----------------定義注解--------------------*/
@Retention(RetentionPolicy.SOURCE)//聲明注釋保留時長
@Target(ElementType.METHOD)//聲明可以使用此注解的元素級別類型(如類、方法變量等)
@Documented//表示當標注了NeedRecord注解的對象在被javadoc生成文檔時,NeedRecord注解將會被API文檔記錄
public @interface NeedRecord {//定義注解
    String userName() default "anonymous";//定義注解成員,同時用default聲明默認值,如果不想聲明默認值,去掉default部分即可
    String value() ;
}
/*------------------使用注解實例1-----------------*/
@NeedRecord("login")
public void login(){
    System.out.println("I'm zenghao ,I'm logining");
}
/*------------------使用注解實例2-----------------*/
@NeedRecord(userName = "zenghao",value = "login")
public void login(){
    System.out.println("I'm zenghao ,I'm logining");
}

四個元注解

JDK中有一些元注解,主要有@Target,@Retention,@Document,@Inherited用來修飾注解。

Target類型 描述
ElementType.TYPE 一> 應用于類、接口(包括注解類型)、枚舉
ElementType.FIELD 一>應用于屬性(包括枚舉中的常量)
ElementType.METHOD一> 應用于方法
ElementType.PARAMETER 一>應用于方法的形參
ElementType.CONSTRUCTOR一> 應用于構(gòu)造函數(shù)
ElementType.LOCAL_VARIABLE 一>應用于局部變量
ElementType.ANNOTATION_TYPE 一>應用于注解類型
ElementType.PACKAGE 一>應用于包
ElementType.TYPE_PARAMETER 一>1.8版本新增,應用于類型變量)
ElementType.TYPE_USE 一>1.8版本新增,應用于任何使用類型的語句中(例如聲明語句、泛型和強制轉(zhuǎn)換語句中的類型)

@Retention
表明該注解的生命周期
生命周期類型 描述
RetentionPolicy.SOURCE一> 編譯時被丟棄,不包含在類文件中
RetentionPolicy.CLASS一> JVM加載時被丟棄,包含在類文件中,默認值
RetentionPolicy.RUNTIME一> 由JVM 加載,包含在類文件中,在運行時可以被獲取到

@Document
表明該注解標記的元素可以被Javadoc 或類似的工具文檔化

@Inherited
表明使用了@Inherited注解的注解,所標記的類的子類也會擁有這個注解

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容