1. 程式人生 > 實用技巧 >java - 註解

java - 註解

註解

常用註解

@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。好處是可以直接寫值,不用再用字典形式賦值
}