黑马程序员----注解

[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},attotation=@MetaAttotation("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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值