zoukankan      html  css  js  c++  java
  • 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

    推荐阅读

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

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

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

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

  • 相关阅读:
    关于FPGA设计16位乘法器的两…
    const&nbsp;int&nbsp;*pi与int&amp;nbs…
    HTML5基础学习
    html5基础!!
    正确分析结构使用正确的HTML标签。CSS样式写一起。
    开发经验以及方法
    布局设计
    position定位
    浏览器的兼容性
    float浮动的世界
  • 原文地址:https://www.cnblogs.com/java-stack/p/11952559.html
Copyright © 2011-2022 走看看