天天看點

Java基礎-注解

一、Annotation的概念

  Annotion(注解)是一個接口,程式可以通過反射來擷取指定程式元素的Annotion對象,然後通過Annotion對象來擷取注解裡面的中繼資料。

二、Annotation的作用

(1)生成文檔 : 可以為類、方法等生成特定的java doc。

(2)編譯處理 :在編譯的時候,可以用注解處理器,對其中的源代碼進行處理。

(3)運作控制:可以在運作時标注類、方法等,用反射的方式達到特殊的流程控制等目的。

三、JDK元注解

(1)@Documented

@Documented Annotation的作用生成Javadoc時包含該注解。

(2)@Retention

@Retention Annotation的作用是标注注解的生命周期,取值RetentionPolicy 枚舉。

public enum RetentionPolicy {
    //注解生存周期是Java的原檔案,例如 Override 
    SOURCE,
   //注解生存周期是Java的Class檔案。底層開發人員使用,用于根據Class檔案生成其他檔案。
    CLASS,
  //注解生存周期是Java的運作時。
    RUNTIME
}
           

(3)@Target

@Target Annotation的作用是說明注解的作用對象,取值

public enum ElementType {
    //類、注解、枚舉
    TYPE,
    //字段、枚舉值
    FIELD,
    //方法
    METHOD,
    //參數
    PARAMETER,
    //構造函數
    CONSTRUCTOR,
    //局部變量
    LOCAL_VARIABLE,
    //注解
    ANNOTATION_TYPE,
    //包
    PACKAGE,
    //類型變量的聲明語句
    TYPE_PARAMETER,
    //類型的任何語句
    TYPE_USE
}
           

(4)@Inherited

  @Inherited Annotation的作用是如果被@Inherited标注的注解,在類上面使用時,子類會自動繼承此注解,否則的話,子類不會繼承此注解。

四、JDK内置注解

(1)@Override

用于修飾此方法覆寫了父類的方法。

**(2)@Deprecated **

用于标記修飾對象已經過時。

(3)@SuppressWarnnings 抑制編譯器警告

名稱 說明
1.deprecation 使用了不贊成使用的類或方法時的警告
2.unchecked 執行了未檢查的轉換時的警告,例如當使用集合時沒有用泛型 (Generics) 來指定集合儲存的類型
3.fallthrough 當 Switch 程式塊直接通往下一種情況而沒有 Break 時的警告
4.path 在類路徑、源檔案路徑等中有不存在的路徑時的警告
5.serial 當在可序列化的類上缺少 serialVersionUID 定義時的警告
6.finally 何 finally 子句不能正常完成時的警告
7.unused 代碼中的變量或方法沒有被使用産生的警告
8.rawtypes 使用泛型時沒有指定類型的警告
9.all 關于以上所有情況的警告

五、自定義Annotation

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//設定是否使用在Javadoc中
@Documented
//設定生命周期
@Retention(RetentionPolicy.RUNTIME)
//設定作用對象
@Target(ElementType.TYPE)
public @interface 注解名稱 {
        //根據需要編寫成員方法
}