什么是Java注解開發(fā)
Java 注解(Annotation)又稱 Java 標注苛谷,是 JDK5.0 引入的一種注釋機制其做。Java 語言中的類、方法醉顽、變量、參數(shù)和包等都可以被標注平挑。和 Javadoc 不同游添,Java 標注可以通過反射獲取標注內(nèi)容系草。在編譯器生成類文件時,標注可以被嵌入到字節(jié)碼中唆涝。Java 虛擬機可以保留標注內(nèi)容找都,在運行時可以獲取到標注內(nèi)容 。 當然它也支持自定義 Java 標注石抡。
Java注解開發(fā)作用
1檐嚣、生成文檔。這是最常見的啰扛,也是java 最早提供的注解嚎京。常用的有@see @param @return 等;
2隐解、在編譯時進行格式檢查鞍帝。如@Override放在方法前,如果你這個方法并不是覆蓋了超類方法煞茫,則編譯時就能檢查出帕涌;
3、自定義注解续徽,在反射的 Class, Method, Field 等方法方法中蚓曼,有許多于 Annotation 相關(guān)的接口∏张ぃ可以在反射中解析并使用 Annotation纫版。常見的的就是在各種框架中的應用;
Java自定義注解
1客情、@interface關(guān)鍵字定義注解
2其弊、@Target用來說明Annotation所修飾的對象范圍
????????@Target取值是在java.lang.annotation.ElementType這個枚舉中規(guī)定的:
? ??????????????CONSTRUCTOR:用于描述構(gòu)造器
????????????????FIELD:用于描述域
? ??????????????LOCAL_VARIABLE:用于描述局部變量
? ??????????????METHOD:用于描述方法
? ??????????????PACKAGE:用于描述包
? ??????????????PARAMETER:用于描述參數(shù)
? ??????????????TYPE:用于描述類、接口(包括注解類型) 或enum聲明
3膀斋、@Retention用來定義該Annotation被保留的時間長短:
? ??????@Retention的取值是在RetentionPoicy這個枚舉中規(guī)定的
? ??????????????SOURCE:在源文件中有效(即源文件保留)
????????????????CLASS:在class文件中有效(即class保留)
????????????????RUNTIME:在運行時有效(即運行時保留)
4梭伐、@Documented用于描述其它類型的annotation應該被作為被標注的程序成員的公共API,因此可以被例如javadoc此類的工具文檔化仰担。Documented是一個標記注解糊识,沒有成員。
5惰匙、@Inherited元注解是一個標記注解技掏,@Inherited闡述了某個被標注的類型是被繼承的。如果一個使用了@Inherited修飾的annotation類型被用于一個class项鬼,則這個annotation將被用于該class的子類哑梳。
5、注解參數(shù)的可支持數(shù)據(jù)類型:
』婷恕①.所有基本數(shù)據(jù)類型(int,float,boolean,byte,double,char,long,short)
○妗②.String類型
∶跸伞③.Class類型
④.enum類型
》途怼⑤.Annotation類型
∥ⅰ⑥.以上所有類型的數(shù)組