java註解

分類:按運行機制分有源碼註解,編譯時註解,運行時註解
源碼註解:編譯時丟棄
編譯時註解:註解在源碼和.class文件中都存在,編譯時起作用@override、@Deprecated、@Suppvisewarnings。
運行時註解:在運行時還起作用@Autowired

元註解:註解的註解

@Target({ElementType.METHOD,ElementType.TYPE})//註解的作用域,有CONSTRUCTOR FIELD LOCAL_VARIABLE METHOD PACKAGE PARAMETER TYPE
@Retention(RetentionPolicy.RUNTIME)//生命週期SOURCE,CLASS,RUNTIME 在什麼階段起作用
@Inherited 允許子類繼承
@Document 生成javadoc時會包含註解的信息

自定義註解
//1成員必須無參無異常,類型有String,Class,Annotation,Enumeration,
//2如果註解只有一個成員,則成員名必須取名爲value(),在使用時可以忽略成員名和賦值號(=)
//3註解類可以沒有成員,沒有成員的註解爲標識註解

public @interface Description{       //使用@interface關鍵字定義註解
        String desc();                           
        Stirng author();
        int age() default 10;                //4可以用default爲成員指定一個默認值
}

使用註解的語法:
@<註解名>(<成員名1>=<成員值1>,<成員名2>=<成員值12,…)

@Description(desc="i am eyeColor",author="xiao chen",age=18)
public String eyeColor(){
     return "red";
}

使用註解

@Description(desc="yyy",author="xiao chen",age=19)
public class Child {    
    @Description(desc="yyy",author="xiao chen",age=19)
    public String name() {
        return null;
    }   
}

解析註解

public class ParseAnnotation {
    public static void main(String[] args){
        //1.使用類加載器加載類
        try {
            Class c=Class.forName("com.annotation.test.Child");
            //2.找到類上面的註解
            boolean isExist=c.isAnnotationPresent(Description.class);//判斷是否存在Decription這個註解
            if(isExist){
                //3.拿到註解實例
                Description d=(Description)c.getAnnotation(Description.class);
                System.out.println(d.desc()+d.author()+d.age());
            }

        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章