关于Java重复注解的原理

博文鸡汤: 《刻意练习》中有这样一句话,如果你愿意投入时间,一切皆有可能。

相信我们大多数猿猿都用过jdk1.8中的重复注解,下面我们先看一下基础使用

1. 定义注解
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(Annos.class)
public @interface Anno {
    String value();
}
2. 定义注解容器
@Retention(RetentionPolicy.RUNTIME)
public @interface Annos {
    Anno[] value();
}
3. 使用注解
@Anno(value = "one")
@Anno(value = "two")
@Anno(value = "three")
@Anno(value = "four")
@Anno(value = "five")
public class AnnoTest { // 此时类上已经有五个注解
	
}

关键性的代码在于 @Repeatable(Annos.class)


4. 下面写一个方法,来解析注解的声明
private static void getAnno(Class<?> aClass) {
        System.out.println("当前类上注解个数:"+aClass.getAnnotations().length);
//        System.out.println(aClass.getAnnotation(Anno.class).value()); 此处空指针
        System.out.println(aClass.getAnnotation(Annos.class).value());
        System.out.println("注解属性的长度:"+aClass.getAnnotation(Annos.class).value().length);
        System.out.println(aClass.getAnnotation(Annos.class).annotationType());
}

// 给予调用
public static void main(String[] args) {
        System.out.println(getAnno(new AnnoTest().getClass()));
}

控制台结果如下:
在这里插入图片描述
可以看到获取到的是注解容器,当我们使用多注解时,实际上
是用了封装的注解容器,在其他一些框架中你可能还看到
另外一种使用形式

@Annos({@Anno(value = "2021"),
        @Anno(value = "一起成为暴富兄弟")})
    private static String getString(String code) {
        return code.intern();
}

总结: , 。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心系编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值