元注解:元注解就是描述注解的注解

    @Target 指定了注解能在哪里使用
    @Retention 可以理解为保留时间(生命周期)
    @Inherited 表示修饰的自定义注解可以被子类继承
    @Documented 表示该自定义注解,会出现在API文档里面

    @Target:比如能在成员变量上使用、类上使用、方式上使用

    1. @Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD}) //指定注解使用的位置(成员变量、类、方法)
    2. @Retention(RetentionPolicy.RUNTIME) // 指定了该注解的存活时间
    3. @Inherited // 指定该注解可以被继承
    4. public @interface anno {
    5. }

    @Retention如果不写该注解,那么该自定义注解只能存活在源码阶段(java文件),编译成class文件的时候这个注解就会消失,运行时就无法使用