自定义注解
@Target注解作用范围
@Target(ElementType.TYPE)
——接口、类、枚举、注解
@Target(ElementType.FIELD)
——字段、枚举的常量
@Target(ElementType.METHOD)
——方法
@Retention作用是定义被它所注解的注解保留多久
source:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;被编译器忽略
class:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期
runtime:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) public @interface DataUnit { String type(); DataUnit.Direction direction(); public static enum Direction { UP, DOWN; private Direction() { } } }