深入理解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“) 只能使用在主方法中,如果继承了就无法生效了,需要看看这个是为什么。