📅  最后修改于: 2020-11-04 06:46:58             🧑  作者: Mango
注释是元数据的一种形式,其中,它们提供有关程序的数据,该数据不是程序本身的一部分。注释对其注释的代码的操作没有直接影响。
注释主要由于以下原因而使用-
编译器的信息–编译器可以使用注释来检测错误或禁止显示警告。
编译时和部署时处理-软件工具可以处理注释信息以生成代码,XML文件等。
运行时处理-一些注释可在运行时进行检查。
在Groovy中,基本注释如下所示-
@interface-at符号字符(@)向编译器指示后面是注释。
注释可以以没有主体和可选默认值的方法的形式定义成员。
注释可以应用于以下类型-
下面是一个字符串注释的示例-
@interface Simple {
String str1() default "HelloWorld";
}
enum DayOfWeek { mon, tue, wed, thu, fri, sat, sun }
@interface Scheduled {
DayOfWeek dayOfWeek()
}
@interface Simple {}
@Simple
class User {
String username
int age
}
def user = new User(username: "Joe",age:1);
println(user.age);
println(user.username);
使用注释时,要求至少设置所有没有默认值的成员。下面给出一个例子。定义示例后使用注释示例时,需要为其分配一个值。
@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 {}