
- Groovy 教程
- Groovy - 首頁
- Groovy - 概述
- Groovy - 環境
- Groovy - 基本語法
- Groovy - 資料型別
- Groovy - 變數
- Groovy - 運算子
- Groovy - 迴圈
- Groovy - 決策制定
- Groovy - 方法
- Groovy - 檔案 I/O
- Groovy - 可選
- Groovy - 數字
- Groovy - 字串
- Groovy - 範圍
- Groovy - 列表
- Groovy - 對映
- Groovy - 日期和時間
- Groovy - 正則表示式
- Groovy - 異常處理
- Groovy - 面向物件
- Groovy - 泛型
- Groovy - 特性
- Groovy - 閉包
- Groovy - 註解
- Groovy - XML
- Groovy - JMX
- Groovy - JSON
- Groovy - DSL
- Groovy - 資料庫
- Groovy - 構建器
- Groovy - 命令列
- Groovy - 單元測試
- Groovy - 模板引擎
- Groovy - 元物件程式設計
- Groovy 有用資源
- Groovy - 快速指南
- Groovy - 有用資源
- Groovy - 討論
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 {}
廣告