Groovy - Chú thích
Chú thích là một dạng siêu dữ liệu trong đó chúng cung cấp dữ liệu về một chương trình không phải là một phần của chính chương trình đó. Chú thích không có ảnh hưởng trực tiếp đến hoạt động của mã mà chúng chú thích.
Chú thích chủ yếu được sử dụng vì những lý do sau:
Information for the compiler - Trình biên dịch có thể sử dụng các chú thích để phát hiện lỗi hoặc ngăn chặn các cảnh báo.
Compile-time and deployment-time processing - Các công cụ phần mềm có thể xử lý thông tin chú thích để tạo mã, tệp XML, v.v.
Runtime processing - Một số chú thích có sẵn để được kiểm tra trong thời gian chạy.
Trong Groovy, một chú thích cơ bản trông như sau:
@interface - Ký tự dấu tại (@) cho trình biên dịch biết rằng những gì sau đây là một chú thích.
Chú thích có thể xác định các thành viên trong the form của các phương thức không có phần thân và một giá trị mặc định tùy chọn.
Chú thích có thể được áp dụng cho các loại sau:
Loại chuỗi
Dưới đây là một ví dụ về Chú thích cho một chuỗi:
@interface Simple {
String str1() default "HelloWorld";
}
Loại enum
enum DayOfWeek { mon, tue, wed, thu, fri, sat, sun }
@interface Scheduled {
DayOfWeek dayOfWeek()
}
Loại lớp
@interface Simple {}
@Simple
class User {
String username
int age
}
def user = new User(username: "Joe",age:1);
println(user.age);
println(user.username);
Giá trị thành viên chú thích
Khi một chú thích được sử dụng, cần phải đặt ít nhất tất cả các phần tử không có giá trị mặc định. Một ví dụ được đưa ra dưới đây. Khi Ví dụ chú thích được sử dụng sau khi được xác định, nó cần phải có một giá trị được gán cho nó.
@interface Example {
int status()
}
@Example(status = 1)
Thông số chú thích đóng cửa
Một tính năng tốt của chú thích trong Groovy là bạn cũng có thể sử dụng bao đóng làm giá trị chú thích. Do đó, chú thích có thể được sử dụng với nhiều cách diễn đạt.
Một ví dụ được đưa ra dưới đây về điều này. Chú thích Onlyif được tạo dựa trên một giá trị lớp. Sau đó, chú thích được áp dụng cho hai phương thức đăng các thông báo khác nhau lên biến kết quả dựa trên giá trị của biến số.
@interface OnlyIf {
Class value()
}
@OnlyIf({ number<=6 })
void Version6() {
result << 'Number greater than 6'
}
@OnlyIf({ number>=6 })
void Version7() {
result << 'Number greater than 6'
}
Chú thích meta
Đây là một tính năng khá hữu ích của chú thích trong groovy. Đôi khi, bạn có thể có nhiều chú thích cho một phương thức như hình minh họa bên dưới. Đôi khi điều này có thể trở nên lộn xộn khi có nhiều chú thích.
@Procedure
@Master class
MyMasterProcedure {}
Trong trường hợp này, bạn có thể xác định một meta-annotation mà kết hợp nhiều chú thích lại với nhau và áp dụng meta annotation cho phương pháp. Vì vậy, đối với ví dụ trên, bạn có thể xác định tập hợp các chú thích bằng AnnotationCollector.
import groovy.transform.AnnotationCollector
@Procedure
@Master
@AnnotationCollector
Sau khi hoàn tất việc này, bạn có thể áp dụng siêu chú thích sau cho phương pháp:
import groovy.transform.AnnotationCollector
@Procedure
@Master
@AnnotationCollector
@MasterProcedure
class MyMasterProcedure {}