您的位置 首页 java

Java教程是为JDK 8编写的——重复注释

Java教程是为JDK 8编写的。本页中描述 的示例 和实践没有利用后面版本中引入的改进。

重复注释

在某些情况下,您希望对声明或类型使用应用相同的注释。在JavaSE 8发行版时, 重复注释 让你做这件事。

例如,您正在编写代码来使用计时器服务,该服务使您能够在给定的时间或特定的时间表上运行一个方法,类似于 UNIX 克隆服务。现在您想要设置一个计时器来运行一个方法,多周期清理,在这个月的最后一天,每个星期五晚上11:00。若要将计时器设置为运行,请创建@Schedule注释,并将其两次应用于多周期清理方法。第一种用法指定月份的最后一天,第二种指定星期五晚上11点,如下面的代码示例所示:

@Schedule(dayOfMonth="last")
@Schedule(dayOfWeek="Fri", hour="23")
public void doPeriodicCleanup() { ... }
 

前面的示例将注释应用于方法。您可以在任何要使用标准注释的地方重复注释。例如,您有一个类用于处理未经授权的访问异常。你用一个注释这个类@ Alert 管理人员注释和管理员注释:

@Alert(role="Manager")
@Alert(role="Administrator")
public  Class  UnauthorizedAccessException extends SecurityException { ... }
 

出于兼容性原因,重复注释存储在 容器注释 它是由Java编译器自动生成的。为了让编译器做到这一点,您的代码中需要两个声明。

步骤1:声明可重复的注释类型

批注类型必须用@Repeatable元注释下面的示例定义了一个自定义@Schedule可重复注释类型:

import java.lang. annotation .Repeatable;
@Repeatable(Schedules.class)
public @interface Schedule {
 String dayOfMonth() default "first";
 String dayOfWeek() default "Mon";
 int hour() default 12;
}
 

的值。@Repeatable元注释,括号中,是Java编译器为存储重复注释而生成的容器注释的类型。在本例中,包含注释类型为Schedules,如此重复@Schedule注释存储在@Schedules注释

将相同的注释应用于声明,而不首先声明它是可重复的,则会导致编译时错误。

步骤2:声明包含注释类型

包含注释类型必须具有value具有数组类型的。数组类型的组件类型必须是可重复的注释类型。声明Schedules包含注释类型的内容如下:

public @interface Schedules {
 Schedule[] value();
}
 

检索注释

反射API中有几种方法可用于检索注释。返回单个注释的方法的行为,如注释元素(类),不变,因为它们只返回一个注释,如果 存在请求类型的注释。如果存在多个请求类型的注释,则可以通过首先获得它们的容器注释来获得它们。通过这种方式,遗留代码继续工作。JavaSE 8中引入了其他方法,它们通过容器注释扫描以同时返回多个注释,例如AnnotatedElement.getAnnotationsByType(Class)。见附加元素有关所有可用方法的信息的类规范。

设计考虑

在设计注释类型时,必须考虑 基数 那种类型的注解。现在可以使用注释零次,一次,或者,如果注释的类型被标记为@Repeatable不止一次。还可以通过使用@Target元注释例如,您可以创建只能用于方法和字段的可重复注释类型。重要的是仔细设计注释类型,以确保程序员 使用 注释发现它尽可能灵活和强大。

文章来源:智云一二三科技

文章标题:Java教程是为JDK 8编写的——重复注释

文章地址:https://www.zhihuclub.com/193628.shtml

关于作者: 智云科技

热门文章

网站地图