Java8新特性之重复注解(repeating annotations)浅析

 更新时间:2014年06月09日 11:39:08   作者:  
这篇文章主要介绍了Java8新特性之重复注解(repeating annotations)浅析,这个新特性只是修改了程序的可读性,是比较小的一个改动,需要的朋友可以参考下

一、什么是重复注解

允许在同一申明类型(类,属性,或方法)的多次使用同一个注解

二、一个简单的例子

java 8之前也有重复使用注解的解决方案,但可读性不是很好,比如下面的代码:

复制代码 代码如下:

public @interface Authority {
     String role();
}

public @interface Authorities {
    Authority[] value();
}

public class RepeatAnnotationUseOldVersion {

    @Authorities({@Authority(role="Admin"),@Authority(role="Manager")})
    public void doSomeThing(){
    }
}

由另一个注解来存储重复注解,在使用时候,用存储注解Authorities来扩展重复注解,我们再来看看java 8里面的做法:

复制代码 代码如下:

@Repeatable(Authorities.class)
public @interface Authority {
     String role();
}

public @interface Authorities {
    Authority[] value();
}

public class RepeatAnnotationUseNewVersion {
    @Authority(role="Admin")
    @Authority(role="Manager")
    public void doSomeThing(){ }
}

不同的地方是,创建重复注解Authority时,加上@Repeatable,指向存储注解Authorities,在使用时候,直接可以重复使用Authority注解。从上面例子看出,java 8里面做法更适合常规的思维,可读性强一点

三、总结

JEP120没有太多内容,是一个小特性,仅仅是为了提高代码可读性。这次java 8对注解做了2个方面的改进(JEP 104,JEP120),相信注解会比以前使用得更加频繁了。

相关文章

  • 聊聊Lombok中的@Builder注解使用教程

    聊聊Lombok中的@Builder注解使用教程

    @Builder注解的作用主要是用来生成对象,并且可以为对象链式赋值。接下来通过本文给大家介绍Lombok中的@Builder注解使用教程,感兴趣的朋友一起看看吧
    2021-11-11
  • MyBatis Mapper中 @Select注解调用静态常量的问题分析

    MyBatis Mapper中 @Select注解调用静态常量的问题分析

    在Java编码中,我们通常会把这些数字或者字符串定义在常量类或者接口中,可以直接在mapper中也可以使用这些常量就比较好,这篇文章主要介绍了MyBatis Mapper中 @Select注解调用静态常量,需要的朋友可以参考下
    2023-06-06
  • java 枚举类定义静态valueOf(java.lang.String)方法的问题及解决

    java 枚举类定义静态valueOf(java.lang.String)方法的问题及解决

    这篇文章主要介绍了java 枚举类定义静态valueOf(java.lang.String)方法的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • java实现马踏棋盘游戏

    java实现马踏棋盘游戏

    这篇文章主要为大家详细介绍了java实现马踏棋盘游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • SpringMVC Cron定时器Demo常见问题解决方案

    SpringMVC Cron定时器Demo常见问题解决方案

    这篇文章主要介绍了SpringMVC Cron定时器Demo常见问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 简单说说JVM堆区的相关知识

    简单说说JVM堆区的相关知识

    今天给大家带来的是关于Java虚拟机的相关知识,文章围绕着JVM堆区展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • spring+hibernate 两种整合方式配置文件的方法

    spring+hibernate 两种整合方式配置文件的方法

    本篇文章主要介绍了spring+hibernate 两种整合方式配置文件的方法,主要有两种方式 1、注解方式 2、xml方式实现,有兴趣的可以了解一下。
    2017-04-04
  • Java数字转中文大写工具类详细代码(拿去即用)

    Java数字转中文大写工具类详细代码(拿去即用)

    最近项目中用到金额转大写的地方,索性给大家总结下,这篇文章主要给大家介绍了关于Java数字转中文大写工具类的相关资料,文中给出了详细的代码示例,需要的朋友可以参考下
    2024-05-05
  • Maven中dependency和plugins的继承与约束

    Maven中dependency和plugins的继承与约束

    这篇文章主要介绍了Maven中dependency和plugins的继承与约束,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 详解设计模式在Spring中的应用(9种)

    详解设计模式在Spring中的应用(9种)

    这篇文章主要介绍了详解设计模式在Spring中的应用(9种),详细的介绍了这9种模式在项目中的应用,具有一定的参考价值,感兴趣的可以了解一下
    2019-04-04

最新评论