【参考资料】
注解(Annotation)自定义注解入门http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html
在定义注解时,需要使用到元注解。所谓元注解,即标注注解的注解,用于对注解做说明。
在Java中定义了4个元注解。
@Target
用于描述此注解对象可以使用在哪些地方,其参数value可使用的取值有
1. ElementType.PACKAGE:用于描述包(?)
2. ElementType.TYPE:用于描述类、接口(包括注解类型) 或enum声明
3. ElementType.FIELD:用于描述成员变量
4. ElementType.METHOD:用于描述成员方法
5. ElementType.CONSTRUCTOR:用于描述构造方法
6. ElementType.PARAMETER:用于描述参数
7. ElementType.LOCAL_VARIABLE:用于描述局部变量
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) |
这里有点疑问就是,如果只有一个Target的话,应该写成这样才是,因为类型是个数组
@Target({ElementType.TYPE}) |
但是直接写成这样也没问题
@Target(ElementType.TYPE) |
@Retention
用于指示该注解在哪个级别保留,其参数value可使用的取值有
1. SOURCE:在源代码中保留
2. CLASS:在.class字节码文件中保留
3. RUNTIME:在运行时保留
其中,CLASS即为编译时注解,RUNTIME即为运行时注解,其使用和解析方式见后面章节。
@Document
表示此注解可被javadoc子类的工具文档化。
@Inherited
表示此注解是可以被继承的。如果一个类上使用了@Inherited修饰的注解,则这个类的子类也将拥有该注解。