Groovy - 注释


注释是元数据的一种形式,其中它们提供有关程序的数据,但该数据不属于程序本身。注解对其所注解的代码的操作没有直接影响。

使用注释主要有以下原因 -

  • 编译器信息- 编译器可以使用注释来检测错误或抑制警告。

  • 编译时和部署时处理- 软件工具可以处理注释信息以生成代码、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);

注释成员值

当使用注解时,至少需要设置所有没有默认值的成员。下面给出一个例子。定义后使用注释Example时,需要为其赋值。

@interface Example {
   int status() 
}

@Example(status = 1)

闭包注释参数

Groovy 中注释的一个很好的功能是您也可以使用闭包作为注释值。因此,注释可以与多种表达式一起使用。

下面给出了一个例子。注解Onlyif是基于类值创建的。然后,将注释应用于两个方法,这两个方法根据 number 变量的值将不同的消息发布到结果变量。

@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 {}