格式
public @interface 注解名稱{}。通俗講,注釋是給程式員看的描述資訊,注解是給計算機看的附加資訊
本質
public interface 注解名稱 extends java.lang.annotation.Annotation{},同上述紅色字型
注解本質是一個接口,繼承Annotation接口。假設,一個類添加了注解,在程式運作時,
1、首先擷取該類的位元組碼檔案。
2、根據注解,記憶體中會自動生成一個該注解接口的實作對象。
3、通過 getAnnotation( ) 方法擷取該對象。
4、通過注解對象調用注解方法。
代碼解釋
@注解名稱( 注解參數1, 注解參數2 )
public class Test{
// 1、解析注解
// 1、1 擷取該類的位元組碼檔案對象
Class<Test> testClass = Test.class;
// 2、擷取上面的注解對象
// 本質上,在記憶體中生成一個該注解接口的子類實作對象
/*
public class 注解名稱Impl implements 注解名稱{
public String 注解方法1(){
return "注解參數1";
}
public String 注解方法2(){
return "注解參數2";
}
}
*/
注解名稱 an = testClass.getAnnotation(注解名稱.class);
// 3、調用注解中的方法擷取屬性值
an.注解方法();
}
最終解釋
@注解名稱( 注解參數1, 注解參數2 )
根據以上注解格式
1、注解是一個接口
2、程式執行時,會自動在記憶體中生成一個注解接口的實作類注解名稱Impl
3、注解名稱Impl會根據以上注解格式 || @注解名稱( 注解參數1, 注解參數2 ) || 通過傳入參數的構造方法的方式産生一個 注解名稱Impl 的執行個體對象
4、根據該執行個體對象使用注解定義的方法