What
@XXX
注解是代碼的注釋剃诅,聲明這個類巷送,這個方法,這個字段是什么矛辕,需要干什么笑跛,是干什么的。
本身不會做什么事情聊品。
解釋過程可以指定編譯器處理飞蹂,或者運行期通過反射來處理。
例如定義一個運行期來處理的注解
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation{
String value();
}
基本語法
函數(shù)返回值只能是 String|基本類型|枚舉|Class|它們的數(shù)組
函數(shù)不能有參數(shù)
函數(shù)可以有默認(rèn)值
可以定義value()且其他函數(shù)都有默認(rèn)值或沒有其他函數(shù)String value()
翻屈,外部可以這樣寫@xxx("xxxString")
定義
public | abstract public @interface xxx{
// String|基本類型|枚舉|Class|它們的數(shù)組 函數(shù)名() |+ default defaulValue;
String[] strs();
//可以有默認(rèn)值
String name() default "ddd";
}
上述例子
//String數(shù)組可以只定義一個String陈哑,因為name定義了默認(rèn)值,所以可以不賦值伸眶。
@xxx{strs="aa"}
class test{
}