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