什么是重复注解

下面是JDK8中的重复注解(java.lang.annotation.Repeatable)定义的源码。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Repeatable {
Class<? extends Annotation> value();
}

重复注解,即一个注解可以在一个类、方法或者字段上同时使用多次,如Spring中可以使用多个扫描组件来扫描多个包的注解。

@ComponentScan
@ComponentScan
public class Configuration{ }

ComponentScan

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Repeatable(ComponentScans.class)
public @interface ComponentScan {

ComponentScans

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Repeatable(ComponentScans.class)
public @interface ComponentScan {
...

重复注解实现

下面来演示下重复注解的实现。

public static void main(String[] args) {
for (Token token : UserToken.class.getAnnotationsByType(Token.class)) {
System.out.println(token.value());
}
} @Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Tokens {
Token[] value();
} @Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(Tokens.class)
public @interface Token {
String value();
} @Token("666666")
@Token("888888")
public interface UserToken {
}

输出结果:

666666
888888

推荐阅读

干货:免费领取2TB架构师四阶段视频教程

面经:史上最全Java多线程面试题及答案

工具:推荐一款在线创作流程图、思维导图软件

分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。

最新文章

  1. iSight集成Adams/View:Adams组件
  2. linux 僵死进程
  3. ps,Photoshop
  4. Catalyst揭秘 Day1 Catalyst本地解析
  5. ServerRelativeUrl与Url
  6. Kooboo中怎么新增一个关联的Details 动态页面。
  7. Adding the Test API in The ASP.NET Web API Help Page
  8. Hibernate 使用说明
  9. Flash与DIV的层叠顺序问题
  10. Java的一些基础小知识之JVM与GC (转)
  11. MySQL5.7解压版详细安装教程,在最后一步需要随机密码
  12. deepin系统下如何设置wifi热点(亲测有效)
  13. Swift学习之元组(Tuple)
  14. jsp文件调用本地文件的方法(Tomcat server.xml 设置虚拟目录)
  15. wordpress 图片上传冲突
  16. 学 shell (1/5)
  17. hadoop fs 获取文件大小
  18. python 基础_ 打印输出 循环分支2
  19. Symbol 实现属性私有化的方式
  20. apache2.2控制目录文件访问设置

热门文章

  1. 2019ccpc网络赛hdu6703 array(线段树)
  2. 线程组,action to be taken after a sampler error
  3. 对 HTTP HTTPS的认识
  4. Eclipse国内下载升级方法
  5. Java中File类创建文件
  6. ReactOS 代码更新后的编译安装
  7. servlet的ServletConfig接口
  8. ionic node-sass安装或编译失败:MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”
  9. java输入一个整数N,打印1~n位数
  10. TCP三次挥手