放在Java源碼的類、方法、字段、參數前的一種特殊“注釋”
第一類是由編譯器使用的注解,例如:
@Override:讓編譯器檢查該方法是否正確地實現了覆寫;
@SuppressWarnings:告訴編譯器忽略此處代碼產生的警告。
這類注解不會被編譯進入.class文件,它們在編譯后就被編譯器扔掉了。
第二類是由工具處理.class文件使用的注解,比如有些工具會在加載class的時候,對class做動態修改,實現一些特殊的功能。
第三類是在程序運行期能夠讀取的注解,它們在加載后一直存在於JVM中,這也是最常用的注解
定義一個注解時,還可以定義配置參數。配置參數可以包括:
所有基本類型;String;枚舉類型;基本類型、String以及枚舉的數組。
因為配置參數必須是常量,所以,上述限制保證了注解在定義時就已經確定了每個參數的值。
注解的配置參數可以有默認值,缺少某個配置參數時將使用默認值。
此外,大部分注解會有一個名為value的配置參數,對此參數賦值,可以只寫常量,相當於省略了value參數。
如果只寫注解,相當於全部使用默認值
public @interface 注解名稱 {
注解參數類型 注解參數() default 默認值;
注解參數類型 注解參數() default 默認值;
注解參數類型 注解參數() default 默認值;
}