簡介
注解的屬性也叫做成員變量,注解只有成員變量,沒有方法。注解的成員變量在注解的定義中以“無形參的方法”形式來聲明,其方法名定義了該成員變量的名字,其返回值定義了該成員變量的類型
實例
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface TestAnnotation { int id(); String msg(); }
備注:上面代碼定義了 TestAnnotation 這個注解中擁有 id 和 msg 兩個屬性。在使用的時候,我們應該給它們進行賦值。
賦值
賦值的方式是在注解的括號內以 value=”” 形式,多個屬性之前用 ,隔開。
@TestAnnotation(id=3,msg="hello annotation") public class Test { }
備注:在注解中定義屬性時它的類型必須是 8 種基本數據類型外加 類、接口、注解及它們的數組
默認值
注解中屬性可以有默認值,默認值需要用 default 關鍵值指定。比如:
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface TestAnnotation { public int id() default -1; public String msg() default "Hi"; }
備注:TestAnnotation 中 id 屬性默認值為 -1,msg 屬性默認值為 Hi。
它可以這樣應用
@TestAnnotation() public class Test {}
因為有默認值,所以無需要再在 @TestAnnotation 后面的括號里面進行賦值了,這一步可以省略。
默認的value
如果一個注解內僅僅只有一個名字為 value 的屬性時,應用這個注解時可以直接把屬性值填寫到括號內。
public @interface Check { String value(); }
上面代碼中,Check 這個注解只有 value 這個屬性,所以可以這樣應用。
@Check("hi") int a;
這和下面的效果是一樣的
@Check(value="hi") int a;
無屬性
一個注解沒有任何屬性,比如
public @interface Perform {}
那么在應用這個注解的時候,括號都可以省略。
@Perform public void testMethod(){}
--------------------- 本文摘取 frank909 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/briblue/article/details/73824058?utm_source=copy