註解
註解也叫元數據,一種代碼級別的說明。與類、接口、枚舉在同一層次。它可以用在任何地方:包、類、字段、局部變量、方法參數、成員方法、成員函數等前面,用來這些元素進行說明、註釋。
註解本質上就是一個接口,該接口默認繼承Annotation接口
作用分類:
- 編寫文檔:通過代碼裏標識的註解生成文檔【例如,生成文檔doc文檔】
- 代碼分析:通過代碼裏標識的註解對代碼進行分析【例如,註解的反射】
- 編譯檢查:通過代碼裏標識的註解讓編譯器能夠實現基本的編譯檢查【例如,Override】
自定義註解
1. 格式
public @interface 註解名稱{
屬性列表;
}
2、分類
- 空註解:沒有屬性集
public @interface MyAnno1 {
}
-
有屬性集的註解:
屬性的定義格式:
(1)數據類型 屬性名稱(); // 沒有默認值
(2)數據類型 屬性名稱() default 默認值; // 有默認值,default後面的內容
public @interface MyAnno2 {
String name();
int age() default 18;
String[] hobbies();
MyAnno1 anno();
}
- 屬性的類型都有哪些?
8種基本類型,String,枚舉,Class類型,註解類型
以上任意類型的一位數組 如int[]。
3、自定義註解的使用
- 使用格式
@註解名稱(屬性名稱1=屬性值1,屬性名稱2=屬性值2 ...)
...
- 注意:
(1)空註解可以直接使用
(2)屬性是數組,使用時,多個值用{}括起來
(3)屬性是數組,只有一個值{}可以省略
(4)有默認值的屬性,可以省略不寫
4、注意事項
- 空註解可以直接使用
- 一個註解只能在一個位置使用一次,一個位置上可以使用多個不同註解
- 如果註解有屬性,那麼必須給屬性賦值
- 如果屬性有默認值,則使用註解的時候,這個屬性可以不用賦值。
如果屬性沒有默認值,那麼在使用註解時一定要給屬性賦值。 - 一個註解中 只有一個屬性 並且這個屬性叫value。那麼賦值時可以省略屬性名