学习java的人都知道java中有javadoc这样的java注解,这类注解是用来生成帮助文档用的。
在EJB、Spring、Hibernate、Struts现都可用注解方式配置应用,但是我们对java annotation又有多少了解呢
其实annotation说是元数据(元数据大家应该不陌生--元数据 最本质、最抽象的定义为: data about data (关于数据的数据-- 关于数据的数据或者叫做用来描述数据的数据 )
元数据的作用
如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类:
l 编写文档:通过代码里标识的元数据生成文档。
l 代码分析:通过代码里标识的元数据对代码进行分析。
l 编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查。
先看看怎么定义一个annotation
就是在定义接口的interface前加@
再看使用方法
添加变量
为变量赋默认值
限定注释使用范围
当我们的自定义注释不断的增多也比较复杂时,就会导致有些开发人员使用错误,主要表现在不该使用该注释的地方使用。为此,Java 提供了一个ElementType 枚举类型来控制每个注释的使用范围,比如说某些注释只能用于普通方法,而不能用于构造函数等。下面是Java 定义的ElementType 枚举:
添加使用范围
这样表明该annotation只能用于方法注解
注释保持性策略
CLASS 编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释。即要通过java反射得到它是得不到的 |
RUNTIME 编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。 |
SOURCE 编译器要丢弃的注释。即要通过java反射得到它是得不到的 |
使用策略;
注释保留策略。此枚举类型的常量描述保留注释的不同策略。它们与 Retention
元注释类型一起使用,以指定保留多长的注释。
运行时注解的读取
类类型注解
方法类型注解
以下为完整的测试用例:
只能用于方法类型
只能用于类类型
使用
测试类
测试类中用到了得到javabean信息的类Introspector的getBeanInfo(Class clazz)方法得到javabean的信息