介紹
註解在我們的日常開發中可謂有着不可估值的重量,但是我們用到的機會非常的少,今天這篇作爲開篇記錄, 如果說註釋是寫給人看的話,那麼註解就是寫給程序看的 註解就像是一個標籤 貼在類上 方法上 或者字段上面。 註解的本質就是接口 反編譯過之後就是自動繼承了Annotation
元註解
元註解就是加在註解上面的註解。
-
@Documented
用於製作文檔, -
@Target
加在註解上,限定該註解的使用位置。不寫的話,好像默認各個位置都是可以的。如果需要限定註解的使用位置,可以在自定義的註解上使用該註解。我們本次默認即可,不特別限定。 -
@Retention(註解的保留策略)
註解的保留策略有三種:SOURCE/ClASS/RUNTIME
-
註解主要被反射讀取
-
反射只能讀取內存中的字節碼信息
-
RetentionPolicy.CLASS指的是保留到字節碼文件,它在磁盤內,而不是內存中。虛擬機將字節碼文件加載進內存後註解會消失
-
要想被反射讀取,保留策略只能用RUNTIME,即運行時仍可讀取
使用
-
getAnnotation 方法
每一個類 或者方法或者屬性上面都有getAnnotation 方法 可以獲取這個類上面的註解
@Retention(RetentionPolicy.RUNTIME)
public @interface IndexID {
String value() default "no feault";
}
@IndexID("123")
public class PersonModel {
public PersonModel() {
}
}
//使用
@Test
void annotation() {
IndexID annotation = PersonModel.class.getAnnotation(IndexID.class);
System.out.println(annotation.value());
}