javaAPI元注解之Repeatable

  • 原创
  • |
  • 浏览:887
  • |
  • 更新:
  • |
  • 标签:JAVA 

Repeatable是jdk1.8中新引入的注解,位于java.lang.annotation包下。

jdkAPI解释:注解类型Repeatable表示,被此注解修饰的注解是可以重复的。注解的参数是可重复注解的存储容器注解类型。

有点拗口,没关系,简单的一句话就是:被Repeatable修饰的注解可以重复的修饰某个元素,还有一点关于存储的,且往下看。

首先说发现这个元注解的过程,是在使用springboot-kafka的时候知道的,因为有个@KafkaListener(topics = "mytopics")注解,其作用是创建一个消费者,监听某个topic,点进去一看竟然有个元注解不认识。现在想明白了,如果我想监听多个topic,我就可以在方法上再加一个@KafkaListener(topics = "mytopics1")的注解,这就是可重复的意思。

现在应该有点意思了吧,且看例子吧,无法形容,一看例子一目了然。

javaAPI元注解之Repeatable

工具/原料

  • Repeatable
  • annotation

方法/步骤

  1. 1

    先看其API定义

    (1)Documented:生成API帮助文档时显示注解。

    (2)Retention:jvm保留。

    (3)Target:此注解是元注解。

    (4)value():有一个返回值是注解类型的方法。

    javaAPI元注解之Repeatable
  2. 2

    写一个普通的注解MyAnnotation

    javaAPI元注解之Repeatable
  3. 3

    接下来常见可重复注解,首先创建一个用于存储的容器注解MyRepeatableAnnotations

    javaAPI元注解之Repeatable
  4. 4

    然后创建可重复注解MyRepeatableAnnotation,并声明@Repeatable(MyRepeatableAnnotations.class),此时会报错,且往下看。

    javaAPI元注解之Repeatable
  5. 5

    然后在MyRepeatableAnnotations注解中添加方法:MyRepeatableAnnotation[] value();发现上一步的编译错误没有了。至此可重复注解就完成了

    javaAPI元注解之Repeatable
  6. 6

    编写测试类,编写四个方法,如下图。

    只有第四个方法编译器报错了,说明不合法,MyAnnotation不是可重复注解,所以报错。

    而第二个方法之所以没有报错是因为,MyRepeatableAnnotation是可重复的注解。

    是不是更形象了,应该理解了吧。

    javaAPI元注解之Repeatable
  7. 6
    该信息非法爬取自百度经验
  8. 7

    编写测试方法,通过反射,获取可重复的注解,发现真的被存储到了MyRepeatableAnnotations中。

    1、是获取repeatable2方法的注解,其有两个注解MyRepeatableAnnotation,但是获取出来确是一个MyRepeatableAnnotations;只不过这两个MyRepeatableAnnotation注解被装在了MyRepeatableAnnotations里面,这也就是API中所说的,注解会被存储到容器注解中。

    2、是获取1处的注解MyRepeatableAnnotations的值(MyRepeatableAnnotation数组),并输出

    3、是获取notRepeatable3方法的注解,就一个MyAnnotation,很正常。

    javaAPI元注解之Repeatable
    javaAPI元注解之Repeatable
    javaAPI元注解之Repeatable
    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部
相关标签JAVA