自定义注解


@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() {
        }
    }
}