京東 69 元:日本米琪邦止痛穴位貼 156 貼 29 元探底
作用在程式碼的註解是
-
@Override - 檢查該方法是否是重寫方法。如果發現其父類,或者是引用的介面中並沒有該方法時,會報編譯錯誤。
-
@Deprecated - 標記過時方法。如果使用該方法,會報編譯警告。
-
deprecation:使用了不贊成使用的類或方法時的警告;
unchecked:執行了未檢查的轉換時的警告,例如當使用集合時沒有用泛型 (Generics) 來指定集合儲存的型別;
fallthrough:當 Switch 程式塊直接通往下一種情況而沒有 Break 時的警告;
path:在類路徑、原始檔路徑等中有不存在的路徑時的警告;
serial:當在可序列化的類上缺少 serialVersionUID 定義時的警告;
finally:任何 finally 子句不能正常完成時的警告;
all:關於以上所有情況的警告 -
@SuppressWarnings - 指示編譯器去忽略註解中宣告的警告
元註解(對其他註解進行修飾的註解)是:
-
@Retention - 標識這個註解怎麼儲存,是隻在程式碼中,還是編入class檔案中,或者是在執行時可以通過反射訪問。不寫該註解預設為CLASS
-
-
僅編譯期:
RetentionPolicy.SOURCE
; -
僅class檔案:
RetentionPolicy.CLASS
; -
執行期:
RetentionPolicy.RUNTIME
。
-
-
@Documented - 標記這些註解是否包含在使用者文件中(生成在javadoc中)。
-
@Target - 標記這個註解應該是哪種 Java 成員。當註解未使用此註解修飾時可以應用在任何元素上
//@Target(ElementType.ANNOTATION_TYPE)
public enum ElementType {
TYPE,//應用在類,介面(包括註解型別),列舉
FIELD,//應用在欄位宣告,包括列舉常量
METHOD,//方法宣告
PARAMETER,//形參宣告
CONSTRUCTOR,//建構函式宣告
LOCAL_VARIABLE,//區域性變數宣告
ANNOTATION_TYPE,//註解型別宣告
PACKAGE,//包宣告
TYPE_PARAMETER,//型別引數宣告
TYPE_USE//型別使用宣告
} -
@Inherited -子類匯繼承父類中被@Inherited修飾的註解
從 Java 7 開始,額外添加了 3 個註解:
-
@SafeVarargs - Java 7 開始支援,忽略任何使用引數為泛型變數的方法或建構函式呼叫產生的警告。
-
@FunctionalInterface - Java 8 開始支援,標識一個匿名函式或函式式介面。
-
@Repeatable - Java 8 開始支援,標識某註解可以在同一個宣告上使用多次。
判斷註解是否存在
-
Class.isAnnotationPresent(Class)
-
Field.isAnnotationPresent(Class)
-
Method.isAnnotationPresent(Class)
-
Constructor.isAnnotationPresent(Class)
w.class.isAnnotationPresent(Test2.class)//類.isAnnotationPresent(註解)存在true
反射獲取註解
-
Class.getAnnotation(Class)
-
Field.getAnnotation(Class)
-
Method.getAnnotation(Class)
-
Constructor.getAnnotation(Class)
Test2 annotation = base.class.getAnnotation(Test2.class);
System.out.println(annotation.value());