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 變數的值將不同的訊息釋出到 result 變數。

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