Java 註解(Annotation)
- 又稱 Java 標註
- JDK 1.5 引入的一種註釋機制
- 用來修飾程序的元素,但不會對被修飾的對象有直接的影響
- 只有通過 某種配套的工具 纔會對註解信息進行訪問和處理
– 主要用途:
• 提供信息給編譯器 / IDE 工具
• 可用於其他工具來產生額外的代碼 / 配置文件等
• 有一些註解可在程序運行時訪問,增加程序的動態性
註解劃分的三大類:內建註解/元註解/自定義註解
1.內建註解
- @Override 表示繼承和重寫
– 修飾方法,檢查該方法是父類的方法 - @Deprecated 表示廢棄
– 修飾類 / 類的元素 / 包
– 標註爲廢除,建議不再使用這個類 / 元素 / 包 - @SuppressWarnings 表示壓制警告
– 可以修飾變量 / 方法 / 構造函數 / 類等
– 壓制各種不同類型的警告信息,使得編譯器不顯示警告
– @SuppressWarnings(“unchecked”) 忽略 unchecked 警告信息
– @SuppressWarnings(“deprecated”) 忽略過時方法的警告信息
– @SuppressWarnings({“unchecked” ,“deprecated”}) 忽略兩種警告
信息
– @ SuppressWarnings(values={“unchecked” ,“deprecated”}) 同上
– @ SuppressWarnings( “all”) 忽略所有的警告信息
– @ SuppressWarnings( “cast”) 忽略類轉型警告
– @ SuppressWarnings( “serial”) 忽略實現 Serializable 接口的,沒有定義serialVersionUID
• 使用 javac - - X 可以看當前的編譯器使用哪些警告類型
- @ SafeVarargs 不會對不定項參數做危險操作
- @ FunctionInterface 聲明功能性接口
2.元註解:用來修飾其他的註解
- @Target 設置目標範圍
– 限定目標註解作用於什麼位置@Target({ElementType.METHOD})
– ElementType.ANNOTATION_TYPE (注:修飾註解)
– ElementType.CONSTRUCTOR
– ElementType.FIELD
– ElementType.LOCAL_VARIABLE
– ElementType.METHOD
– ElementType.PACKAGE
– ElementType.PARAMETER
– ElementType.TYPE - @Retention 設置保持性
– 示例: @Retention(RetentionPolicy.RUNTIME)
– 用來修飾其他註解的存在範圍
– RetentionPolicy.SOURCE 註解僅存在源碼,不在 .class 文件。
– RetentionPolicy.CLASS 這是默認的註解保留策略 。註解存在於
.class 文件,但是不能被 JVM 加載。
– RetentionPolicy.RUNTIME 這種策略下,註解可以被 JVM 運行時
訪問到。通常情況下,可以結合反射來做一些事情。 - @Documented 文檔
– 指明這個註解可以被 Javadoc 工具解析,形成幫助文檔 - @Inherited 註解繼承
– 讓一個類和它的子類都包含某個註解
–普通的註解沒有繼承功能 - @Repeatable 此註解可以重複修飾
– 自 JDK1.8 引入
– 表示被修飾的註解可以重複應用標註
– 需要定義註解和容器註解
3.自定義註解
- 擴展於 java.lang.annotation.Annotation
- 成員可以包括多種類型
- 使用時可以給註解成員賦值
@interface