1、元註解
1.1 @Target
【作用】
用於指定標註的註解可以使用的位置,例如:@Target(ElementType.METHOD)
:表示可以使用在方法上,其他結構不能使用;@Target({ElementType .METHOD, ElementType.TYPE})
:表示可以使用在方法和介面、類別、枚舉上。
相關線上影片教學:java課程
1.2 @Retention
【作用】
用於指定所標註的註解保留階段,註解共有三個值:
@Retention(RetentionPolicy.SOURCE)
:表示保留到原始程式碼階段,編譯後消失
@Retention(RetentionPolicy.CLASS)
:表示保留到編譯階段,運行後消失
@Retention(RetentionPolicy.RUNTIME)
:表示保留到執行階段,若要透過反射讀取註解訊息,需要指定該註解保留階段為RUNTIME
1.3 @Inherited
【作用】
#表示這個註解是否可以被子類別繼承。
1.4 @Documented
【作用】
表示這個註解是否可以被 Javadoc 讀取到文件中。
2、註解宣告
【格式】
#【元註解】
【修饰符】 @interface 注解名 { 注解体 }
【範例】
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { }
3、設定參數宣告
【格式】
【数据类型】 参数名() default 默认值;
default 預設值:在需要設定預設值時,可以加,需要設定時,不用寫;
資料類型只能是:基本資料型態、String、Class、enum、Annotation,及以上所有類型的一維數組。
如果參數成員只有一個或使用頻率較高的參數可以定義參數名稱為:value,在使用註解時,若參數名稱為 value 可以省略,則直接寫輸入的值。
【範例】
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { String name() default ""; }
4、讀取註解訊息
只有註解標註@Retention(RetentionPolicy.RUNTIME)
才能透過反射讀取。
讀取註解資訊透過反射讀取,具體如下:
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; public class TestInterface { public static void main(String[] args) { MyAnnotation myAnnotation = MyClass.class.getAnnotation(MyAnnotation.class); String value = myAnnotation.value(); System.out.println(value); } } @MyAnnotation class MyClass {} @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @interface MyAnnotation { String value() default "我是一个注解"; }
輸出結果:
以上是java基礎之註解的詳細內容。更多資訊請關注PHP中文網其他相關文章!