註解之註解的屬性

  • 註解的屬性也叫作成員變量。註解只有成員變量,沒有方法。
  • 註解的成員變量在註解的定義中以「無形參的方法」形式來聲明
  • 其方法名定義了該成員變量的名字,其返回值定義了該成員變量的類型。
  • 註解中屬性能夠有默認值,默認值須要用 default 關鍵值指定。
@interface AnnotationTest{
String value();
int sex() default 1;
}
// 註解中有多個屬性,賦值的方式:括號內以 value="",多個屬性以前用 ,隔開。

@AnnotationTest(value="3",sex=0)
public class Test {
}

有默認值且不想改值,無需在 @TestAnnotation 後的括號中爲sex進行賦值了java

如一個註解內僅只有一個成員變量且名字爲 value 的屬性時,應用這個註解時可直接寫屬性值到括號內。數組

註解沒有任何屬性,括號均可以省略。spa

 自定義註解類編寫的一些規則:code

  • 全部的Annotation會自動繼承java.lang.annotation.Annotation,並不能繼承別的類或是接口
  • 參數成員只能用public或默認(default)這兩個訪問權修飾
  •  參數成員只能用基本數據類型(char,boolean,byte、short、int、long、float、double)和String、Enum、Class、annotations數據類型,以及這一些類型的數組對象

  • 要獲取類方法和字段的註解信息,必須經過Java的反射技術來獲取 Annotation對象,除此以外沒有別的獲取註解對象的方法

 示例代碼:blog

/**
 * 註解的屬性
 * ★ 註解的屬性也叫作成員變量。註解只有成員變量,沒有方法。
 * ★ 註解的成員變量在註解的定義中以「無形參的方法」形式來聲明,
 * 其方法名定義了該成員變量的名字,其返回值定義了該成員變量的類型。
 * 註解中屬性能夠有默認值,默認值須要用 default 關鍵值指定。
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationField {
    String tableName();//註解的成員變量:無形參方法
    // 返回值是成員變量的類型,tableName是成員變量名稱
    //默認值須要用 default 關鍵值指定
    //如下報錯:
    //Integer flag Default 1;Default須要小寫
    //Integer flag() default 1; 註解的成員變量在註解的定義中以「無形參的方法」形式來聲明,因此須要使用flag()來聲明
    //Integer flag() default 1;報錯緣由是由於參數成員 變量只能使用基本的數據類型
    // (char,boolean,byte,short,int,float,double)和(String,Enum,Class,annotations)等這些數據類型,以及這一些類型的數組
    //不能使用包裝類對象,由於其是一個應用類型並非一個基本數據類型
    //註解中全部的成員對象在使用註解時都須要被使用,除了default默認值之外
    //由於default值是默認的,咱們不須要寫,使用註解時也知道這個值是多少
    int flag() default 1;
}
//當一個註解中只有一個註解屬性且名爲value,
// 那麼在使用的時候能夠直接使用@AnnotationTest1("tb_table")。
// 若果沒有屬性,括號也能夠省略
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationTest1 {
    String value();
}
@AnnotationField(tableName = "tb_animal", flag = 0)//使用多個註解值,中間用,割開,若是不想使用默認值,能夠在註解中爲其從新賦值
@AnnotationTest1("tb_animal")
public class Animal {
    private String name;
    private String sex;
    private Integer age;
}
相關文章
相關標籤/搜索