注解
一.注解
相当于一个标记,在程序中加了注解就等于为程序打了某种标记。没加,则等于没有某种标记,以后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. //----代码结束-----------------------------------
分享到:
相关推荐
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490899
JAVA设计模式--程序设计--反射--注解--泛型
---注解---.xmind Java常用各种注解
Java 第二阶段建立编程思想 【枚举和注解】---- 代码 Java 第二阶段建立编程思想 【枚举和注解】---- 代码 Java 第二阶段建立编程思想 【枚举和注解】---- 代码 Java 第二阶段建立编程思想 【枚举和注解】---- 代码 ...
spring注解 -----最简单的注解与自动装配例子
spring-demo10-注解-IOC.zip
spring-demo13-注解-@Value.zip
Spring MVC学习(六)-------注解式控制器详解1
在火狐中显示可能会有问题,大家都是程序员,改个参数就好啦 注解包含: 拦截器 , 过滤器 , 序列化 , @After , @AfterReturning , @AfterThrowing , @annotation , @Around , @Aspect , @Autowired , @Bean , @Before ,...
内容概要:通过带着读者编写Java基础语法测试代码,理解基础数据类型-注解-数组-inet-反射-oop-Java代码实现过程和测试代码 适合人群:初学java语法入门测试代码 能学到什么:①注解、数组、数据类型、inet、method...
JAXB-XML注解-应用
Springboot-注解-通用操作日志组件。2.0.0版本修改了一些变量名称,而且做的使向下不兼容的修改,如果大家不想改,可以一直使用1.x的版本,后续还会迭代的, 如果第一次接入推荐大家使用最新版本 3.X ~~ 1.x
Eclipse-SpringBoot框架-注解介绍.docxEclipse-SpringBoot框架-注解介绍.docx
Spring系列--注解.md
十二长生歌诀注解-甲木长生口诀[文].pdf
机器学习实战(第六章-支持向量机-所有代码与详细注解-python3.7) 机器学习实战(第六章-支持向量机-所有代码与详细注解-python3.7)
Spring+SpringMVC+MyBatis整合相关配置文件:注解+xml配置。个别处需要根据使用情况修改,映射配置文件为示例,需自行编写。依赖maven管理
机器学习实战(第三章-决策树-ID3算法-所有代码与详细注解-python3.7) 机器学习实战(第三章-决策树-ID3算法-所有代码与详细注解-python3.7)
详细的反射-动态代理-注解
方剂学-第二版-李冀-方歌-注解.doc