zoukankan      html  css  js  c++  java
  • 组合注解(Annotation)

    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    /**
     * @author: lihui
     * @date: 2020-05-20
     */
    public class CompositeAnnotationStudy {
        public static void main(String[] args) {
            AnnotationTwo annotationTwo = ClassInAnnotation.class.getAnnotation(AnnotationTwo.class);
            System.out.println(annotationTwo.basePackages());
            AnnotationOne annotationOne = annotationTwo.annotationType().getAnnotation(AnnotationOne.class);
            System.out.println(annotationOne.value());
    
            System.out.println(annotationTwo.getClass().getAnnotation(AnnotationOne.class));
        }
    }
    
    @AnnotationTwo()
    class ClassInAnnotation {
    }
    
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @AnnotationOne 
    @interface AnnotationTwo {
        String basePackages() default "basePackages";
    }
    
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented 
    @interface AnnotationOne {
        String value() default "value";
    }
    

    输出如下:

    basePackages
    value
    null
    
    可以看到:一个注解就可以得到许多种注解的信息。 
    
    注意:
    获得一个注解的注解不是通过这种方式:
    annotation.getClass().getAnnotation(AnnotationOne.class);
    而是通过以下方式:
    annotation.annotationType().getAnnotation(AnnotationOne.class);
    
  • 相关阅读:
    Scala教程之:静态类型
    java运行时跟编译时的区别,欢迎大家指正
    循环者的诅咒
    Python分支结构与流程控制
    底层剖析Python深浅拷贝
    I/O格式化与运算符
    详解Python垃圾回收机制
    LeetCode29 Medium 不用除号实现快速除法
    详解SkipList跳跃链表【含代码】
    高等数学——讲透微分中值定理
  • 原文地址:https://www.cnblogs.com/eaglelihh/p/12925568.html
Copyright © 2011-2022 走看看