注释是元数据的形式,其中它们提供关于不是程序本身的一部分的程序的数据。注释对它们注释的代码的操作没有直接影响。
注释主要用于以下原因 -
编译器信息 -编译器可以使用注释来检测错误或抑制警告。
编译时和部署时处理 -软件工具可以处理注释信息以生成代码,XML文件等。
运行时处理 -一些注释可以在运行时检查。
在Groovy中,基本注释如下所示:
@interface - at符号字符(@)向编译器指示以下是注释。
注释可以以没有主体的方法的形式和可选的默认值来定义成员。
注释可以应用于以下类型 -
下面给出了字符串注释的一个例子 -
@interface Simple { |
String str1() default "HelloWorld"; |
} |
enum DayOfWeek { mon, tue, wed, thu, fri, sat, sun } |
@interface Scheduled { |
DayOfWeek dayOfWeek() |
} |
使用注释时,需要至少设置所有没有默认值的成员。下面给出一个例子。当定义后使用注释示例时,需要为其分配一个值。
@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 {} |
import groovy.transform.AnnotationCollector |
@Procedure |
@Master |
@AnnotationCollector |
import groovy.transform.AnnotationCollector |
@Procedure |
@Master |
@AnnotationCollector |
@MasterProcedure |
class MyMasterProcedure {} |