java如何避免注释重复

使用Java 8,您可以对声明或类型重复相同的注释。 例如,要注册一个类仅应由特定角色在运行时访问,则可以编写如下内容:

@Role("admin")
@Role("manager")
public class AccountResource {
}

注意,现在@Role重复了几次。 出于兼容性原因,重复注释存储在容器注释中,因此,您不仅需要编写两个注释,还需要编写两个@Role@Roles注释,而不是只编写一个注释。

请注意,您需要创建两个注释,一个是注释的“多个”部分,您可以在其中将value方法的返回类型设置为可以多次使用的注释数组。 另一个注释可以在定义它的作用域中多次使用,并且必须使用@ Repeatable注释进行注释。

自从Java 8允许这样做以来,我一直都是这样做的。 但是上周,在一次代码审查中,我的队友George Gastaldi向我指出了他们如何在javax.validation规范中实现这些可重复的注释。 当然,它并没有完全不同,但是我认为从实现的角度看,这似乎很清楚,因为所有内容都在同一档案中实现,而且我认为该名称看起来很自然。

@Repeatable(Role.List.class)
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Role {String value();@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})@interface List {Role[] value();}
}

注意,现在所有内容都放置在同一档案中。 由于通常只需要引用@Role类,而不是@Roles (现在为@ Role.List )注释,因此可以将此注释隐藏为内部注释。 同样,在定义多个批注的情况下,这种方法使所有内容看起来都更加紧凑,而不必使用用于相同目的的“重复”类来填充层次结构,而只需创建一个即可。

当然,我并不是说拥有两个班级的方法是错误的,最后是关于偏好的选择,因为两者实际上是相似的。 但是,在以这种方式实现可重复注释之后,我认为这是一种更干净,更紧凑的解决方案,它在一个类中定义了所有内容。

我们不断学习,

亚历克斯

翻译自: https://www.javacodegeeks.com/2018/02/repeatable-annotations-java-8.html

java如何避免注释重复

java如何避免注释重复_Java 8中的可重复注释相关推荐

  1. java io使用哪些设计模式_JAVA IO中的设计模式

    在java语言 I/O库的设计中,使用了两个结构模式,即装饰模式和适配器模式. 在任何一种计算机语言中,输入/输出都是一个很重要的部分.与一般的计算机语言相比,java将输入/输出的功能和使用范畴做了 ...

  2. java 绑定微信号开发_Java开发中的常见危险信号

    java 绑定微信号开发 在开发,阅读,复审和维护成千上万行Java代码的几年中,我已经习惯于看到Java代码中的某些" 危险信号 ",这些信号通常(但可能并非总是)暗示着代码有问 ...

  3. c++注释快捷键_JAVA编程中你一定要掌握的“快捷键”

    导读 相信很多编程小白刚开始的时候,都对大神充满了,膜拜.因为他们可以随随便便敲出很多行代码,重点是他们没有动鼠标!这时候就有人问了,我怎么不动鼠标啊? 今天,我就要和大家分享一些很实用的Java快捷 ...

  4. mysql中如何去除重复数据_MySQL中如何删除重复数据只保留一条

    在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断SELECT *FROM peopleWHERE p ...

  5. java过滤lsit重复_java 8 中获取List结合中过滤后的重复数据

    //excel文件上传数据 List list = importResult.getList(); if (list.size() >200) { String error = Constant ...

  6. java swing 控件拖动_java swing中实现拖拽功能示例

    java实现拖拽示例 Swing中实现拖拽功能,代码很简单,都有注释,自己看,运行效果如下图: package com; import java.awt.*;import java.awt.datat ...

  7. java事件处理过程分布写_Java 9中的进程处理

    java事件处理过程分布写 一直以来,用Java管理操作系统进程都是一项艰巨的任务. 这样做的原因是可用的工具和API较差. 老实说,这并非没有道理:Java并非旨在达到目的. 如果要管理OS进程,则 ...

  8. java 绑定微信号开发_Java开发中的更多常见危险信号

    java 绑定微信号开发 在< Java开发中的常见危险信号>一文中,我研究了一些不一定本身就是错误或不正确的做法,但它们可能表明存在更大的问题. 这些"红色标记"类似 ...

  9. java命令行参数工具_Java方法中的参数太多,第8部分:工具

    java命令行参数工具 在我的系列文章的前七篇文章中,有关处理Java方法中期望的参数过多的内容集中在减少方法或构造函数期望的参数数量的替代方法上. 在本系列的第八篇文章中,我将介绍一些工具,这些工具 ...

最新文章

  1. 电脑课装b专用代码_FANUC伺服电机代码表(完整版)
  2. 微软沈向洋:计算机视觉未来在语义层 “两大一精”是关键
  3. MySQL空密码用户清理
  4. html css 画五角星,纯 CSS3 绘制图形(心形、五角星、六边形等)
  5. epoll的两种模式
  6. TensorFlow深度学习应用开发实战(深度学习简介和开发环境搭建)
  7. webmagic框架
  8. Yii2.0 PHP框架-姜海强-专题视频课程
  9. 幸福框架:可扩展的应用程序 “启动引导” 框架
  10. JavaScript闭包
  11. mis系统的编写与设计
  12. 中晋最新消息2020年_油价调整最新消息:今天油价再次创出2020年新低
  13. 在美国成年人群体中,语音助手Siri已经成了第二大移动搜索引擎
  14. 将旧笔记本的硬盘DIY成移动硬盘
  15. 20万赚200万,48岁创业者是这样吊打小鲜肉的!
  16. 《程序员》12月精彩内容:双11技术决战
  17. cf各区服务器所在位置,为什么说“黑区”是CF第一服务器
  18. App测试要点提取和分析
  19. hr人力资源管理系统8项功能
  20. 云舒3C,巧解云南电网GIS系统之殇的利刃

热门文章

  1. Network POJ-3694
  2. Zju2112 Dynamic Rankings(树状数组套可持久化权值线段树)
  3. YBTOJ:灯光控制(贪心)(公倍数)(暴力枚举)
  4. CF932G-Palindrome Partition【PAM】
  5. P4774-[NOI2018]屠龙勇士【EXCRT】
  6. P3185-[HNOI2007]分裂游戏【SG函数】
  7. P4762-[CERC2014]Virus synthesis【PAM,dp】
  8. P3698-[CQOI2017]小Q的棋盘【树形dp】
  9. jzoj5231-序列问题【分治】
  10. 【2018.5.19】模拟赛之四-ssl2435 航空公司【并查集,二分】