Java註解(聞過)

註解就如同標籤同樣。

一、註解的定義

//註解的定義,至關於建立了一個名字爲Frozen的標籤
    public @interface Frozen{}

二、註解的應用

上面咱們定義了一個註解標籤
下面咱們將標籤貼在方法上
java

@Frozen
public static void getSomthing(){}

將標籤貼在類上ide

@Frozen
public class UseZhujie {

}

三、註解的工做原理

上面咱們建立了註解,並把他貼在了某處,可是這貨是怎麼工做的呢?工具

首先呢,咱們必須先了解元註解。
所謂元註解,在筆者看來就是註解的基本組成部分,元註解組成註解,是註解裏的基本單位。code

【5種元註解】
A、@Retention
這個註解就是肯定註解的存活時間的,也就是常說的生命週期。blog

RetentionPolicy.SOURCE
註解只在源碼階段保留,在編譯器進行編譯時它將被丟棄忽視。
RetentionPolicy.CLASS
註解只被保留到編譯進行的時候,它並不會被加載到 JVM 中。
RetentionPolicy.RUNTIME
註解能夠保留到程序運行的時候,它會被加載進入到 JVM 中,因此在程序運行時能夠獲取到它們。繼承

B、@ Documented
它會被 javadoc 之類的工具處理, 因此註解類型信息也會被包括在生成的文檔中,是一個標記註解,沒有成員。
C、@ Target
限制註解的應用場景,就是規定當前的註解能夠貼在什麼地方
ElementType.ANNOTATION_TYPE
能夠給一個註解進行註解
ElementType.CONSTRUCTOR
能夠給構造方法進行註解
ElementType.FIELD
能夠給屬性進行註解
ElementType.LOCAL_VARIABLE
能夠給局部變量進行註解
ElementType.METHOD
能夠給方法進行註解
ElementType.PACKAGE
能夠給一個包進行註解
ElementType.PARAMETER
能夠給一個方法內的參數進行註解
ElementType.TYPE
能夠給一個類型進行註解,好比類、接口、枚舉
D、@ Inherited
繼承,也就是說。
ClassA的註解被@Inherited修飾以後,假設ClassB extends ClassA 那麼ClassB也具備與ClassA被修飾過的同樣的註解了。
E、@ Repeatable
Java1.8新特性接口

四、註解的屬性

public @interface Frozen{
    String frozen();
    int redant();
}

//應用剛建立的註解
@Frozen(frozen = "hoyl", redant = 0)
public static void getSomthing(){}

能夠添加屬性默認值生命週期

public @interface Frozen{
    /*  String frozen();
        int redant();*/
        //能夠設置默認值
        String frozen() default "Frozen";
        int redant() default 100;
    }

這樣被貼標籤的就不用了賦值了 開發

//@Frozen(frozen = "hoyl", redant = 0)
@Frozen
public static void getSomthing(){}

五、Java預置註解

這些呢,大多數是編譯器自動感知。而後報警告,提示自動添加的。
@ Deprecated
這是告訴開發者,調用的東西過期了文檔

Java註解(聞過)
@ Override
想重寫父類的方法
@ SuppressWarnings
一些警告
@ SafeVarargs
阻止編譯器產生 unchecked警告
@ FunctionalInterface
1.8新特性

六、註解有啥用?

一、生成文檔。二、跟蹤代碼依賴性,實現替代配置文件XML功能。三、在編譯時進行格式檢查。

相關文章
相關標籤/搜索