[toc]
-
自定义注解,和定义接口相同,在interface前添加@符号
public @interface CherryAnnotation { }
-
注解限制
-
@Target 限制注解在哪些Java元素上可以使用。
枚举值 备注 TYPE 类,接口(包括注释类型)或枚举声明 FIELD 字段声明(包括枚举常量) METHOD 方法声明 PARAMETER 形式参数声明 CONSTRUCTOR 构造函数声明 LOCAL_VARIABLE 局部变量声明 ANNOTATION_TYPE 注释类型声明 PACKAGE 包裹申报 TYPE_PARAMETER 类型参数声明 TYPE_USE 使用类型 @Target可以使用单个限制或多个限制value = {?,?,?,?}
-
@Retention 注解,翻译为持久力、保持力。即用来修饰自定义注解的生命力。
注解的生命周期有三个阶段:1、Java源文件阶段;2、编译到class文件阶段;3、运行期阶段。同样使用了RetentionPolicy枚举类型定义了三个阶段:
枚举值 备注 SOURCE 注解将被编译器忽略掉 CLASS 注解将被编译器记录在class文件中,但在运行时不会被虚拟机保留,这是一个默认的行为 RUNTIME 注解将被编译器记录在class文件中,而且在运行时会被虚拟机保留,因此它们能通过反射被读取到 在平时开发中一般都是用Runtime
-
@Documented 是被用来指定自定义注解是否能随着被定义的java文件生成到JavaDoc文档当中。
-
@Inherited注解,是指定某个自定义注解如果写在了父类的声明部分,那么子类的声明部分也能自动拥有该注解。@Inherited注解只对那些@Target被定义为ElementType.TYPE的自定义注解起作用。
-