在Java 1.5 ,annotation data可以在runtime and compile-time處理
紫色的字是Marker Annotation的例子
public class Annotation {
}
class A{
@Deprecated
public void test(){
}
}
Annotation Type是annotations的藍圖,宣告Annotation Type類似宣告interface,只是在interface前面多加了@符號:
public @interface TestAnnotationType {
String printSomthing();
}
Annotation Type的元素是用方法來定義,這個方法不可以傳入參數,也不可以丟出例外,而回傳值必須是基本型別,
String, Class, enums, annotations, 以及以上型別的陣列,方法也可以有預設值.
public @interface TestAnnotation {
String sayHello();
String defaultSayHello() default "hello";
}
Annotation可以提供額外的資訊給程式使用,可以在compile的時候設定deprecated method展示出warning messages,或是說利用annotation
讓一些tools產生程式碼,或是說在執行時期把值(Value)傳給method使用.
Annotation可以用在class,interface,method,還有field
Java5提供了metadata的能力,可以讓你自己定義annotation type.
一個沒有元素的Annotation type被稱為Marker annotation type.
public @interface TestAnnotation {
}
Marker annotation type的使用上可以省略{},如下例:
public @interface TestAnnotation {
}
@TestAnnotation
class Test1 { }
單一元素的annotation type可以直接給值,如下例:
public @interface TestAnnotation {
String value();
}
@TestAnnotation ("Test")
class Test1 { }
annotation 是一種特別的修飾子,它可以放在任何修飾子(諸如public ,privte,protected,等等)可以放的地方,而annotations的值只可以是編譯時期常數.
Annotation的整理
|
參考連結:
Java Guide
沒有留言:
張貼留言