Groovy - 注解
注解 是一种元数据形式,其中它们提供有关不属于程序本身的程序的数据。 注解对其注解的代码的操作没有直接影响。
注解主要用于以下原因 −
编译器信息 − 编译器可以使用注解来检测错误或抑制警告。
编译时和部署时处理 − 软件工具可以处理注解信息以生成代码、XML 文件等。
运行时处理 − 一些注解可以在运行时检查。
在 Groovy 中,一个基本注解如下所示 −
@interface - at 符号字符 (@) 向编译器指示后面是注解。
注解可以以the form的方法定义成员,没有主体和可选的默认值。
注解可以应用于以下类型 −
字符串类型
下面给出了一个字符串注解的例子 −
@interface Simple { String str1() default "HelloWorld"; }
枚举类型
enum DayOfWeek { mon, tue, wed, thu, fri, sat, sun } @interface Scheduled { DayOfWeek dayOfWeek() }
Class 类型
@interface Simple {} @Simple class User { String username int age } def user = new User(username: "Joe",age:1); println(user.age); println(user.username);
注解成员值
使用注解时,需要至少设置所有没有默认值的成员。 下面给出一个例子。 注解 Example 定义后使用时,需要赋值。
@interface Example { int status() } @Example(status = 1)
闭包注解参数
Groovy 中注解的一个很好的特性是您也可以将闭包用作注解值。 因此,注解可以与多种表达方式一起使用。
下面给出了一个例子。 注解 Onlyif 是基于类值创建的。 然后将注解应用于两个方法,它们根据数字变量的值向结果变量发布不同的消息。
@interface OnlyIf { Class value() } @OnlyIf({ number<=6 }) void Version6() { result << 'Number greater than 6' } @OnlyIf({ number>=6 }) void Version7() { result << 'Number greater than 6' }
元注解
这是 groovy 中注解的一个非常有用的功能。 有时您可能对一个方法有多个注解,如下所示。 有时,如果有多个注解,这会变得很混乱。
@Procedure @Master class MyMasterProcedure {}
在这种情况下,您可以定义一个元注解,它将多个注解组合在一起,并将元注解应用于方法。 因此对于上面的示例,您可以首先使用 AnnotationCollector 定义注解集合。
import groovy.transform.AnnotationCollector @Procedure @Master @AnnotationCollector
完成此操作后,您可以将以下元注解器应用于该方法 −
import groovy.transform.AnnotationCollector @Procedure @Master @AnnotationCollector @MasterProcedure class MyMasterProcedure {}