【spring 註解】第1篇:Java基礎註解學習

註解是什麼

註解的定義

Java註解經過@interface關鍵字定義java

public @interface MyAnnotation {
}

那麼註解究竟是個什麼東西呢?在平常生活中,每每會給關係要好的朋友起一個暱稱或者綽號,好比說雷軍,網絡上尊稱雷布斯,能夠理解爲雷布斯就是雷軍的一個標籤,而且雷布斯這個標籤有特定的含義。那麼註解在咱們的java代碼中就起到了一個標籤的做用。數組

註解的屬性

註解的屬性也叫作成員變量。註解有且只有成員變量。註解的成員變量在註解的定義中以「無形參的方法」形式來聲明,其方法名定義了該成員變量的名字,其返回值定義了該成員變量的類型。可是在註解中定義屬性時它的類型必須是 Java 基本數據類型、類、接口、註解及它們的數組網絡

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    int id();
    String info();
}

在使用註解時能夠重複爲註解屬性賦新值,以下:code

@MyAnnotation(id = 1,info = "hello annotation")
public class AnnoDemo {
}

註解屬性能夠有本身的默認值,使用default關鍵字聲明;繼承

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    int id() default 0;
    String info() default "";
}

另外若是註解在聲明時使用了value做爲屬性名稱,應用這個註解時能夠直接將屬性值填寫到括號內。接口

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Rename {
    String value();
}

上面帶有value屬性的註解能夠這樣使用:生命週期

@MyAnnotation(id = 1,info = "hello annotation")
public class AnnoDemo {
    @Rename("hello")
    private String name;
}

元註解

在介紹註解屬性的時候,咱們已經開始使用了部分註解,好比@Target@Retention,這些東西是什麼呢?咱們稱之爲元註解。get

元註解是什麼

元註解是一種特殊的註解,它可以應用到其它的普通註解上面,目的就是給其餘普通的註解進行解釋說明。源碼

元註解的類型

  • @Retention:當一個普通註解被@Retention註解標識時,它限定了這個普通註解的生命週期。it

    1. RetentionPolicy.SOURCE: Java源碼期起做用,編譯期被丟棄;
    2. RetentionPolicy.CLASS: 只在編譯期起做用,單不會被加載到JVM中;
    3. RetentionPolicy.RUNTIME: 它會被加載進入到JVM中,在Java程序運行的生命週期中都起做用;
  • @Target:當一個普通註解被@Target註解標識時,這個普通註解就被限定了在那些地方起做用。好比被限定只在java的類上起做用、或者方法上起做用。

    1. ElementType.TYPE: 對註解、類、接口、枚舉進行註解;
    2. ElementType.FIELD: 對屬性進行註解;
    3. ElementType.METHOD: 對方法進行註解;
    4. ElementType.PARAMETER: 對形參進行註解;
    5. ElementType.CONSTRUCTOR: 對構造器進行註解;
    6. ElementType.LOCAL_VARIABLE: 對局部變量進行註解;
    7. ElementType.ANNOTATION_TYPE: 對註解進行註解;
    8. ElementType.PACKAGE: 對一個包進行註解;
    9. ElementType.TYPE_PARAMETER: 對引用類型參數註解(JDK1.8新增);
    10. ElementType.TYPE_USE: 對類型進行註解(JDK1.8新增);
  • @Documented: 說明該註解將被包含在javadoc中。
  • @Inherited: 若是一個父類被@Inherited修飾過的註解進行註解的話,那麼若是它的子類沒有被任何註解應用的話,那麼這個子類就繼承了父類的註解。
  • @Repeatable: 被@Repeatable修飾的註解能夠重複使用。

註解的應用場景

相關文章
相關標籤/搜索