常见注解包
java.lang.annotation.Retantion
java.lang.annotation.RetantionPolicy
java.lang.annotation.Target
java.lang.annotation.ElementType
自定义注解可以通过四个元注解@Retention,@Target,@Inherited,@Documented,分别说明它的声明周期,使用位置,是否被继承,是否被生成到API文档中。
Annotation 的成员在 Annotation 定义中以无参数有返回值的抽象方法的形式来声明,我们又称为配置参数。返回值类型只能是八种基本数据类型、String类型、Class类型、enum类型、Annotation类型、以上所有类型的数组
可以使用 default 关键字为抽象方法指定默认返回值
如果定义的注解含有抽象方法,那么使用时必须指定返回值,除非它有默认值。格式是“方法名 = 返回值”,如果只有一个抽象方法需要赋值,且方法名为value,可以省略“value=”,所以如果注解只有一个抽象方法成员,建议使用方法名value。
java 注解策略
RetantionPolicy:
Source 源码
Class 源码和类
Runtime 源码和类和运行时
* SOURCE:注解只在源代码中可用,编译器会丢弃这种注解。 * CLASS:注解在源代码和类文件中可用,但在运行时不可用。 * RUNTIME:注解在源代码、类文件和运行时都可用。@Retantion(RetantionPolicy.RUNTIME)
@Target({ElementType.Field ...})
可以使用@Target来指定一个注解只能用于方法,或者只能用于类等。如果注解只有一个 value字段,那么使用的时候 可以直接写 value值
@Inherited 注解子类自动继承父类的注解
@Inherited注解的自动继承特性是由Java的反射API实现的,而不是由@Inherited注解的代码直接实现的。 当你使用Class类的getAnnotation或isAn