Java--註解

BtWangZhi發表於2017-12-04

1 Java定義的基本註解
@Overide 檢查父類中有無被修飾的方法。
@Deprecated 標記為已過時。
@SuppressWarnings 抑制編譯警告
@SafeVarargs
堆汙染:將一個不帶泛型的物件賦給了一個帶泛型的變數,往往會出現堆汙染。會出現警告,該註解抑制該警告
@FunctionalInterface 用來指定某個介面必須是函式式介面。

2 自定義註解

//使用如下註解後,定義的註解才會在JVm執行時裝載.class時讀取修飾的註解資訊
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {

    String name() default "dema";

    int age() default 1;

注意:一定要新增@Retention(RetentionPolicy.RUNTIME)。
新增到一個方法中:

public class TextAnnotation {

    @MyAnnotation(name="dema",age=10)
    public void getInfo(){
        System.out.println("run in getInfo"); 
    }
}

測試:獲取註解上的值資訊。

public static void text02() throws NoSuchMethodException,
            SecurityException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        Class<?> clazz = Class
        .forName("com.text.annotation.TextAnnotation");
        Method method = clazz.getMethod("getInfo");
        Annotation[] annArray = method.getAnnotations();//獲取該方法上的註解資訊
        for (Annotation annotation : annArray) {
            if(annotation instanceof MyAnnotation){
                //獲取該註解成員值
                System.out.println(((MyAnnotation)annotation).name()+"  "+((MyAnnotation)annotation).age());
            }
        }
    }

結果:
這裡寫圖片描述

相關文章