在有的情况下,你可能想要在同一个元素上面使用相同的 Annotation 注释多次。这在 Java 8 版本之前是做不到的。从 Java 8 开始提供了可重复注释(repeating annotations)能够让你达到这个目的。
什么时候需要用到可重复注释呢?假设你需要让一个方法在每个月的最后一天和每周五的 23:00 执行一次,那么你可以像下面这样添加注释:
@Schedule(dayOfMonth="last")
@Schedule(dayOfWeek="Fri", hour="23")
public void doPeriodicCleanup() { ... }
上面这个例子在方法上添加了可重复注释,当然,你也可以像其它 Annotation 一样,将重复注释添加到任何你想添加的地方。例如,如果你想要让你的类处理未授权的访问异常,你可以像下面这样添加注释:
@Alert(role="Manager")
@Alert(role="Administrator")
public class UnauthorizedAccessException extends SecurityException { ... }
为了兼容性考虑,可重复注释是保存在容器 Annotation(container annotation)中的,在编译的时候由 Java 编译器自动生成容器 Annotation,并将可重复注释存放到容器 Annotation 中。因此为了让编译器能够做到这一点,你的代码中必须要包含两个 Annotation 声明。下面看看步骤:
第一步、声明可重复 Annotation 类型
Annotation 类型必须要添加 @Repeatable 元注释,例如:
@Repeatable(Schedules.class)
public @interface Schedule { ... }
@Repeatable 后面的小括号中是用来存放可重复注释的容器 Annotation 名称,容器 Annotation 由 Java 编译器生成,并用来存放可重复注释。在这个例子中,容器 Annotation 名称是 Schedules,因此可以这么说,@Schedule 是存放在 @Schedules 中的。
记住,如果要在 Java 的同一个元素上重复使用注释,那么在声明注释的时候 @Repeatable 元注释不可或缺,否则会有编译错误。
第二步、声明容器 Annotation 类型
容器 Annotation 必须有个数组类型的 value 元素。并且数组中各个元素的类型必须是可重复注释的类型。例如:
public @interface Schedules {
Schedule[] value;
}
获取 Annotation
在 Java API 中提供了反射 API 来获取 Annotation。例如 AnnotatedElement.getAnnotationByType(Class),这个方法返回一个 Annotatoin。但是如果一个元素上有多个重复 Annotation 的话,用这个方法只会返回容器 Annotation 中的第一个 Annotation。在 Java 8 中提供了更多的 API 来获取容器 Annotation 中的所有可重复注释,例如 AnnotatedElement.getAnnotations(Class) 等,可参看 Java API 获取更多这方面的信息。
文章来源:
http://www.aptusource.org/2014/03/java-8-repeat-annotations/
分享到:
相关推荐
3. **增强可读性**:良好的注释有助于理解代码功能,尤其对于复杂项目而言,注释是必不可少的文档。 4. **便于维护**:当需要更新版本信息或者修改作者信息时,只需要更改模板,所有使用该模板的注释都会自动更新。 ...
在Java编程中,注释是不可或缺的一部分,它们用于提高代码的可读性和可维护性。一个良好的注释模板可以帮助开发者快速地为类和方法添加描述,使得其他团队成员或者未来的自己能够更容易理解代码的功能和用途。本文将...
"JAVA注释模板"就是这样一个主题,它涉及到了如何在Java开发中创建和使用标准的注释模板。 在Java中,注释是用来解释代码功能、逻辑或用途的部分,它们分为三种类型:单行注释、多行注释和文档注释(Javadoc)。...
Java 注释编码的知识点涵盖了Java注解(Annotations)的基本概念、语法、使用场景以及与Java SE 8的变化。注解是Java SE 5引入的一个特性,用于为Java代码提供元数据。这些元数据可以被编译器读取,也可以用于运行时...
本文将详细介绍如何在 myEclipse 和 Eclipse IDE 中配置 Java 文档注释,通过自动化工具减少重复工作,提高开发效率。 #### 二、Java 文档注释的重要性 Java 文档注释(也称为 Javadoc 注释)是一种特殊格式的注释...
这个压缩包“JavaAPI部分练习代码全注释”显然是为了帮助Java初学者或者有经验的开发者巩固和深化对Java API的理解而准备的。以下是一些关于Java API的重要知识点: 1. **基础类库**:Java API包括了I/O流、集合...
在编程领域,代码和注释的模板格式是至关重要的,特别是在Java这种面向对象的语言中。良好的代码风格和规范不仅能够提高代码的可读性,还能提升团队协作的效率,因为所有人都能按照统一的标准来编写代码。"Java代码...
8. **集合框架**:Java集合框架包括ArrayList、LinkedList、HashSet、HashMap等,它们提供了存储和操作对象的高效工具。 9. **输入输出流**:Java的I/O流系统支持文件读写、网络通信等数据传输,例如...
**超详细注释基于BlogJava主页的Java爬虫程序** 在信息技术领域,网络爬虫是一种自动化获取网页数据的工具,广泛应用于数据挖掘、搜索引擎索引和数据分析等场景。本项目是一个针对BlogJava(一个知名的Java技术交流...
默认的接口方法Lambda 表达式功能接口对方法和构造函数的引用可重复注释数据类型注释方法参数的反射用于处理集合的流 API数组的并行排序用于处理日期和时间的新 API新的 JavaScript Nashorn 引擎
Java注释是编程语言中的一种重要工具,用于提供元数据信息,这些信息可以在代码的生命周期中起到多种作用,包括但不限于帮助开发人员理解代码、辅助工具进行自动化处理以及提供运行时的元数据查询。在Java中,注释并...
7. **接口的默认方法**:在Java 8中,接口可以拥有默认方法,这些方法带有实现,可以避免在实现接口时重复编写相同代码。默认方法通过`default`关键字定义。 8. **类型推断增强**:编译器在Java 8中增强了类型推断...
在本项目中,我们讨论的是一个使用Java编程语言编写的简易计算器程序。这个计算器程序具有基本的四则运算功能,并且源代码中包含了详细的注释,便于初学者理解和学习。 首先,我们需要理解Java编程基础。Java是一种...
在Java编程中,找出两个数组中的重复元素是一个常见的问题,特别是在数据处理和算法设计中。本示例提供了源代码来解决这个问题,确保了代码的正确性,并在优化方面达到了适中的水平。以下是对该主题的详细说明: 1....
在“过滤数组中重复元素.txt”这个文件中,很可能包含了上述方法的详细注释和一个完整的示例代码。这个Demo可能会从创建一个包含重复元素的ArrayList开始,然后使用其中一种方法去除重复,最后打印出结果,以便读者...
在Java编程中,处理HTML文件时有时需要去除其中的注释内容,以实现特定的功能需求,比如在给定的项目中,需要读取HTML文本文件并删除其中的注释以便进一步处理或存储。删除HTML注释的过程涉及到对HTML结构的理解以及...
"批量增加注释小助手.jar" 是一个专为Java开发者设计的工具,它简化了在大量源代码中添加注释的繁琐过程。这个程序可能是用Java语言编写的,并且以jar(Java Archive)格式打包,使得用户可以在任何安装了Java运行...
在编程世界中,注释是源代码中不可或缺的一部分,它为其他开发者提供了理解代码功能、逻辑和意图的关键信息。在Java编程中,遵循良好的注释规范尤为重要,因为这有助于提高代码的可读性和维护性。中国的程序员群体...
Java实体类代码生成器是一种工具,它能够自动化创建Java编程中的数据访问对象(DAO)或实体类,大大节省了开发人员编写重复性代码的时间。实体类通常用于表示数据库中的表或者服务接口的数据结构,它们是ORM(对象...
借助简短的代码示例,您将学习如何使用默认接口方法、lambda 表达式、方法引用和可重复注释。在本文的最后,您将熟悉最新的API更改,例如流、功能接口、映射扩展和新的 Date API。没有大段文字,只有一堆带注释的...