[align=center][size=medium][b]注解[/b] [/size][/align]
[align=center]---------------------- [url=http://edu.csdn.net/heima]android教育訓練[/url]、[url=http://edu.csdn.net/heima]java教育訓練[/url]、期待與您交流! ---------------------- [/align]
一.注解
相當于一個标記,在程式中加了注解就等于為程式打了某種标記。沒加,則等于沒有某種标記,以後javac編譯器,開發工具和其他程式可以用反射來了解你的類及各種元素上有無任何标記,看你有什麼标記,就去幹相應的事。标記可以加在包、類、字段、方法、方法的參數以及局部變量上
java源檔案 class檔案 記憶體中的位元組碼
@Retention(value:runtime/source/class)//該注解注解的注解表示此注解的使命周期應該在什麼時期
@Target(Element.XX,Element.XX)//注解應放在什麼地方,比如類、方法、包、等,可以在多個地方出現時,中間加,号
二.注解的屬性及使用
可以為8中基本資料類型、String、數組、枚舉、Class、注解,其他類型會編譯報錯
Java代碼
1. //----部分代碼-----------------------------------
2. //定義一個注解類
3. import java.lang.annotation.Retention;
4. import java.lang.annotation.RetentionPolicy;
5.
6. @Retention(RetentionPolicy.RUNTIME)//标記生命周期是運作時
7. public @interface ItcastAnnotation {
8. String color() default "blue";//可以為某個變量設值預設屬性
9. String value();//如果隻有value屬性需要設值時,可以在調用時省去“value=”直接寫值。
10. int[] arrys(); //數組類型
11. EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED;//枚舉類型
12. MetaAttotation attotation() default @MetaAttotation("haha");//注解類型
13. }
14. //定義一個應用了注解的類
15. //這個注解标記定義在類上還是方法上要看定義注解的類是如何定義的,也就是看@Target()這個注解的定義
16. //"()"這個括号裡寫的屬性是在定義的注解類裡寫的屬性,沒有寫預設值的也就是default的必須出現在括号中。
17. @ItcastAnnotation(value="value",arrys={1,2,3},[email protected]("hehe"))
18.
19. //定義一個應用了注解的類進行反射操作的類
20. public static void main(String[] args) {
21. //檢查應用了注解的類是由有要反射的那個注解
22. if (AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)) {
23. //獲得注解的對象
24. ItcastAnnotation annotation = AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
25. //通過對象調用注解中的屬性
26. System.out.println(annotation.color());
27. System.out.println(annotation.value());
28. System.out.println(annotation.arrys().length);
29. System.out.println(annotation.lamp().nextLamp());//這個枚舉是前面講到過的紅綠燈示例中的類
30. System.out.println(annotation.attotation().value());
31. }
32. /*----運作結果
33. blue
34. value
35. 3
36. GERRN
37. hehe
38. */
39. //----代碼結束-----------------------------------
[align=center]---------------------- [url=http://edu.csdn.net/heima]android教育訓練[/url]、[url=http://edu.csdn.net/heima]java教育訓練[/url]、期待與您交流! ---------------------- 詳細請檢視:[url=http://edu.csdn.net/heima]http://edu.csdn.net/heima[/url][/align]