深入理解Java:注解(Annotation)自定义注解入门 ---- http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html
深入理解Java:注解(Annotation)--注解处理器 -----http://www.cnblogs.com/peida/archive/2013/04/26/3038503.html
其中第一个文章里面提到的:
有四个元注解:
为JDK的解释:
Documented
: 指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化。
Inherited
:指示注释类型被自动继承。
Retention
:指示注释类型的注释要保留多久。
Target
:指示注释类型所适用的程序元素的种类。
Target
和Retention分别有ElementType RetentionPolicy 来设置。
public enum RetentionPolicy { SOURCE, CLASS, RUNTIME; }
public enum ElementType { TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, ANNOTATION_TYPE, PACKAGE; }
所以需要看下ElementType 和 RetentionPolicy 枚举类型对应的含义:
ElementType :
ANNOTATION_TYPE 注释类型声明
CONSTRUCTOR 构造方法声明
FIELD 字段声明(包括枚举常量)
LOCAL_VARIABLE 局部变量声明
METHOD 方法声明
PACKAGE 包声明
PARAMETER 参数声明
TYPE 类、接口(包括注释类型)或枚举声明
RetentionPolicy 此枚举类型的常量描述保留注释的不同策略。
CLASS 编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释。
RUNTIME 编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。
SOURCE 编译器要丢弃的注释。
但是有个问题:
看一个文档中说一个特定的注解@Tx(”template“) 只能使用在主方法中,如果继承了就无法生效了,需要看看这个是为什么。