涉及到java開發時的一些註解(元註解)

涉及到java開發時的一些註解(元註解)

在學習一些作者原創作品時,見到一些平時開發時用到不多的一些註解,爲了方便自己以後參考,在此留一些記錄

java元註解

@Retention

英譯中:保留
用途:保留位置

@Retention(RetentionPolicy.SOURCE)

僅存在與源碼中,在編譯成class字節碼文件後就不展示

@Retention(RetentionPolicy.CLASS)

默認的保留策略,註解會在class文件中存在,但運行時無法獲得

@Retention(RetentionPolicy.RUNTIME)

註解會在class文件中存在,並且運行時可以通過反射獲取到

@Target

英譯中:目標
用途:作用目標

@Target(ElementType.TYPE)

接口、類、枚舉、註解

@Target(ElementType.FIELD)

字段、枚舉的常量

@Target(ElementType.METHOD)

方法

@Target (ElementType.PARAMETER)

方法參數

@Target (ElementType.CONSTRUCTOR)

構造函數

@Target (ElementType.LOCAL_VARIABLE)

局部變量

@Target (ElementType.ANNOTATION_TYPE)

註解

@Target (ElementType.PACKAGE)

@Document

用途:說明該註解將被包含在javadoc中

@Inherited

用途:說明子類可以繼承父類中的該註解

實例

1.創建註解

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TestAnnotationI {

    public String testGetStr();

    int value();
}

2.調用註解

public class TakedClassImpl implements TakedClass{

    private static final int ARG_1 = 10;

    @Override
    @TestAnnotationI(testGetStr = "1", value = ARG_1)
    public String test1(String arg) {
        System.out.println("start -------------");
        return "1";
    }

}

3.反射獲取註解,打印註解的參數值

public static String testAnnotation(String arg1){

    Class ipt=TakedClassImpl.class;
    Method[] mts=ipt.getMethods();
    for(Method mt:mts){
        TestAnnotationI ad=mt.getAnnotation(TestAnnotationI.class);//如果方法上  沒有該註解  則返回null
         int value=ad.value();
         System.out.println("value:"+value);
    }
    return arg1;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章