java - 註解
阿新 • • 發佈:2020-09-16
註解
常用註解
@override 重寫,覆蓋父類方法
@Deprecated 該方法已過時,雖然可以用,但是不建議使用
@SuppressWarnings 抑制警告
元註解
作用是,用來解釋自定義註解的註解,在自定義註解時使用。一共有4個
@Target 表示該註解用於什麼地方,該註解的使用範圍 •ElemenetType.CONSTRUCTOR 構造器 •ElemenetType.FIELD 成員變數(包括enum的例項) •ElemenetType.LOCAL_VARIABLE 區域性變數宣告 •ElemenetType.METHOD 方法宣告 •ElemenetType.PACKAGE 包宣告 •ElemenetType.PARAMETER 引數宣告 •ElemenetType.TYPE 類,介面(包括註解型別)或enum宣告 •ElementType.ANNOTATION_TYPE 註解
@Retention 用於表示在什麼級別儲存註解資訊,用於描述註解的宣告週期
•RetentionPolicy.SOURCE 原始碼可用
•RetentionPolicy.CLASS 註解在class檔案中可用,但會被VM丟棄
•RetentionPolicy.RUNTIME 執行期也保留註釋,可通過反射讀取註解資訊(一般使用這個)
SOURCE<CLASS<RUNTIME
@Document 將此註解包含在javadoc中
@Inherited 允許子類繼承父類中的註解
示例程式碼
package com.hz; public class User { public static void main(String[] args) { new User().login(); } String userName; private String passWord; public User() { } public User(String userName, String passWord) { this.userName = userName; this.passWord = passWord; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public void setPassWord(String passWord) { this.passWord = passWord; } @MyAnnotation(userName = "user1", passWord = "123456") // 作用在方法 void login(){ System.out.println("使用者登入"); } @Deprecated // 過時的方法 void login2(){ System.out.println("此方法以及過時"); } @MyAnnotation2("abc") // 如果只有一個,請要value。好處是可以直接寫值,無需再用字典形式賦值 void logout(){ System.out.println("使用者登出"); } } @Target(value = {ElementType.METHOD}) // 作用在變數上 @Retention(RetentionPolicy.RUNTIME) // 執行時 @Documented // 註解可以生成到javadoc中 @Inherited // 可被繼承 @interface MyAnnotation{ String userName(); String passWord(); int money() default 0; // 預設值 } @Target(value = {ElementType.METHOD}) // 作用在變數上 @Retention(RetentionPolicy.RUNTIME) // 執行時 @Documented // 註解可以生成到javadoc中 @Inherited // 可被繼承 @interface MyAnnotation2{ String value(); // 如果只有一個,請用value。好處是可以直接寫值,不用再用字典形式賦值 }