在Java中,有一些內置的(或稱為“基礎”)注解(annotation),這些注解在Java標準庫中定義,并且具有特定的用途。以下是一些主要的Java內置注解:
- @Override:
- 用于表示一個方法是重寫了父類的方法。
- 如果在子類中聲明的方法并沒有重寫父類中的任何方法,編譯器會報錯。
- 這是一個標記注解,沒有關聯任何元素。
- @Deprecated:
- 用于表示某個類或方法已經過時,建議開發者避免使用它。
- 編譯器在編譯時會給出警告,告知該元素已過時。
- 這是一個標記注解,也可以與since元素一起使用,以指定替代項或替代方法的版本。
- @SuppressWarnings:
- 用于告訴編譯器忽略指定的警告。
- 它可以用于類、方法或字段。
- 通常與特定的警告鍵(如"unchecked"、"deprecation"等)一起使用。
- @SafeVarargs:
- 用于泛型方法或構造函數,以告訴編譯器不要對使用泛型參數變量的方法或構造函數發出"unchecked"警告。
- 這是一個標記注解,通常與泛型方法一起使用。
- @FunctionalInterface:
- 用于聲明接口是函數式接口,即接口中只能有一個抽象方法(除了默認方法和靜態方法之外)。
- 如果接口不符合函數式接口的要求(即存在多個抽象方法),編譯器會報錯。
- 這是一個標記注解,沒有關聯任何元素。
- @Retention:
- 用于指定注解的保留策略。
- 這是一個元注解(用于注解其他注解的注解),有三個可能的值:SOURCE(只在源碼中存在,編譯時被丟棄)、CLASS(在字節碼文件中存在,但JVM運行時丟棄)、RUNTIME(在JVM運行時保留,可以通過反射讀取)。
- @Target:
- 用于指定注解可以用于哪些Java元素。
- 這也是一個元注解,可能的值包括ElementType枚舉中的常量,如TYPE(類、接口、注解類型或枚舉聲明)、METHOD(方法聲明)、FIELD(字段聲明)等。
- @Documented:
- 用于表示該注解應該被javadoc和類似的工具記錄。
- 默認情況下,javadoc不包含注解。但是,如果注解被標記為@Documented,那么javadoc就會包含它。
這是一個標記注解。
- @Inherited:
- 表示一個注解類型被自動繼承。
- 如果一個使用了@Inherited注解的類型被用于一個類,則這個注解也被用于該類的所有子類。
- 這是一個標記注解。
- @Native:
- 這是Java NIO包中的一個注解,用于標記本地方法。在Java 9及以后的版本中,它已經被標記為過時(deprecated),并被 @Native(在java.lang.annotation包中)取代,但用途和效果有所不同。在Java NIO中,@Native通常與ByteBuffer等類一起使用,表示該方法是一個本地方法,直接調用操作系統的API。
注意:Java中的內置注解主要用于元數據編程、文檔生成、編譯時檢查等目的。開發者還可以創建自定義注解,以滿足特定的需求。