元注解()

 * 元注解:注解类上的注解
 * @Retention(RetentionPolicy.RUNTIME):Annotation这个注解的存活时间,不写默认是源码阶段,RUNTIME是运行时阶段,就是Class字节码文件
 * @Target:表示该注解可以定义在成员变量、类、方法上
 * @Inherited:指定在注解可以被继承,意思就是使用了这个注解的子类也会继承这个注解
 */
@Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface Annotation {
    
}
    public static void main(String[] args)
        throws ClassNotFoundException, InstantiationException, IllegalAccessException {

        Class clazz = Class.forName("anno.Student");
        // 判断clazz是否有添加了注解Anno,true存在,false不存在
        boolean result = clazz.isAnnotationPresent(Anno.class);
    }
@Anno
public class Student {

}
————————
 * 元注解:注解类上的注解
 * @Retention(RetentionPolicy.RUNTIME):Annotation这个注解的存活时间,不写默认是源码阶段,RUNTIME是运行时阶段,就是Class字节码文件
 * @Target:表示该注解可以定义在成员变量、类、方法上
 * @Inherited:指定在注解可以被继承,意思就是使用了这个注解的子类也会继承这个注解
 */
@Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface Annotation {
    
}
    public static void main(String[] args)
        throws ClassNotFoundException, InstantiationException, IllegalAccessException {

        Class clazz = Class.forName("anno.Student");
        // 判断clazz是否有添加了注解Anno,true存在,false不存在
        boolean result = clazz.isAnnotationPresent(Anno.class);
    }
@Anno
public class Student {

}