转载自 JDK8新特性之重复注解

什么是重复注解

下面是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

JDK8新特性之重复注解相关推荐

  1. java8 重复注解_Java8新特性_重复注解与类型注解

    1.总结 1.忘记注解上该写什么时,可以随意写一个注解然后点击进去参考.复制 2.默认情况下不支持重复注解,需要定义容器 3.标注注解为@Repeatable 4.若需要获取注解的值,可以通过反射获取 ...

  2. JDK8新特性:Lambda表达式、Stream流、日期时间工具类

    重要特性: 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值. 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号. 可选的大括号:如果主体包含了一个语句,就不需要大括号. ...

  3. Java 8 新特性:扩展注解(类型注解和重复注解)

    转载自  Java 8 新特性:扩展注解(类型注解和重复注解) (注:先回顾下JDK1.5版本出现的注解 ,然后再解释JDK 8的注解 更新内容.) 一.注解(JDK1.5) 1.注解(@): 注解就 ...

  4. 反射、注解、动态代理、JDK8新特性

    反射.注解.动态代理.JDK8新特性 第一章.反射 1.类的加载 源文件--通过javac编译-->字节码文件---通过Java命令(通过ClassLoader)--->JVM运行字节码文 ...

  5. Java番外篇2——jdk8新特性

    Java番外篇2--jdk8新特性 1.Lambda 1.1.无参无返回值 public class Test {interface Print{void print();}public static ...

  6. JDK8新特性知识点总结

    一个简洁的博客网站:http://lss-coding.top,欢迎大家来访 学习娱乐导航页:http://miss123.top/ 1. Open JDK 和 Oracle JDK Java 由 S ...

  7. 【JavaSE之JDK8新特性】三万字详文带你了解JDK8新特性

    JDK8新特性 一.Lambda 1.1需求分析 2.Lambda表达式的初级体验 3.Lambda表达式的语法规则 3.1.Lambda练习1 3.2.Lambda表达式练习2 4.Function ...

  8. JDK8新特性详解Lambda、StreamAPI、Optional等

    JDK8学习笔记 学习视频地址:https://www.bilibili.com/video/BV1k64y1R7sA 操作代码:https://gitee.com/rederic/study-jdk ...

  9. 集合框架,JDK8新特性

    一.集合框架 1.为什么会有集合? 集合和数组都是java中提供的可以用来存储多个数据的一种容器.由于数组类型特点是存储同一类型的元素且长度固定,可以存储基本数据类型值.为了满足现实需求, Java中 ...

最新文章

  1. 教育部发文35所高校新增AI本科专业!想回去重新高考
  2. Linux内核移植之一:内核源码结构与Makefile分析
  3. MongoDB 基础用法及学习笔记
  4. mc网站服务器设置家怎么圈地,《我的世界》怎么圈地 设置方法教程
  5. pmp每日三题(2022年3月4日)
  6. Android App图片轮播效果的组件化
  7. 【笔记】Linux的目录配置(a2)
  8. C++语言中std::array的神奇用法总结,你需要知道!
  9. Pandas period_range
  10. 7.高性能MySQL --- MySQL 高级特性
  11. 黑客是怎样买彩票的?
  12. 破解电视盒 运营商送的,各种型号。通用 TTL 破解电视盒,更新华为悦盒
  13. Linux查看文件数量
  14. 三星note3smn9005怎么放SIM卡
  15. OWASP十大漏洞之一
  16. cad转pdf格式怎么设置线宽
  17. “海外围猎场”里的中国游戏玩家
  18. DNS服务器IP地址大全
  19. 第十八篇:融汇贯通--谈USB Video Class驱动
  20. unimrcp 实现阿里云的plugin

热门文章

  1. MySql :Could not create connection to database server.
  2. [设计模式]迪米特法则
  3. [剑指offer]面试题10:二进制中1的个数
  4. 数据结构与算法--简单栈实现及其应用
  5. diff git 指定时间,git diff日期?
  6. 数据结构:链表(c语言)
  7. TCP提供可靠传输的工作原理和实现过程
  8. OSI/RM 开放系统互联参考模型
  9. #6682. 梦中的数论(Min25筛)
  10. P3358 最长k可重区间集问题(网络流:串联思想)