java中所有的元注解都定义在java.lang.annotation包下
一:提供了四种元注解
- @Documented:指定被标注的注解会包含在javadoc中。
- @Retention: 指定注解的生命周期(源码、class文件、运行时)
- RetentionPolicy .SOURCE : 在编译阶段丢弃
- RetentionPolicy .CLASS : 在类加载的时候丢弃
- RetentionPolicy .RUNTIME : 始终不会丢弃,运行期也保留该注解,因此可以使用反射机制读取该注解的信息。我们自定义的注解通常使用这种方式。
3: @Target:指定注解使用的目标范围(类、方法、字段等)
● ElementType.**CONSTRUCTOR :**用于描述构造器。
● ElementType.FIELD :成员变量、对象、属性(包括enum实例)。
● ElementType.LOCAL_VARIABLE: 用于描述局部变量。
ElementType.METHOD : 用于描述方法。
● ElementType.PACKAGE :用于描述包。
● ElementType.PARAMETER:用于描述参数。
● ElementType.**ANNOTATION_TYPE**:用于描述参数
● ElementType.**TYPE :**用于描述类、接口(包括注解类型) 或enum声明。
4:@Inherited:指定子类可以继承父类的注解,只能是类上的注解,方法和字段的注解不能继承。
二:jdk1.8又提供了以下两个元注解
5:@Native: 指定字段是一个常量,其值引用native code。
6:@Repeatable: 注解上可以使用重复注解,即可以在一个地方可以重复使用同一个注解,像spring中的包扫描注解就使用了这个。
7:使用 ** @interface ** 关键词来定义注解。