Tôi chỉ đang chơi với chương trình metaclass trong Groovy. Nhưng đột nhiên tôi đã phải đối mặt với một vấn đề nhỏ mà tôi chỉ có thể không được làm việc ...Thêm phương pháp vào metaclass
Đây là kịch bản đơn giản:
// define simple closure
def printValueClosure = {
println "The value is: '$delegate'"
}
String.metaClass.printValueClosure = printValueClosure
// works fine
'variable A'.printValueClosure()
// define as method
def printValueMethod(String s){
println "The value is: '$s'"
}
// how to do this!?
String.metaClass.printValueMethod = this.&printValueMethod(delegate)
'variable B'.printValueMethod()
Có thể sử dụng phương pháp này nhưng thiết lập các tham số đầu tiên để kêu gọi vật? sử dụng đại biểu dường như không hoạt động ... Việc gán các phương thức không tham chiếu đến người gọi là không có vấn đề gì. Công việc cà ri có ở đây không?
Cảm ơn, Ingo
Tốt. Cảm ơn. Không bao giờ nghĩ về điều đó ... Cũng có một cách thuận tiện để thêm nhiều phương thức trợ giúp tĩnh vào một lớp (không phải thông qua danh mục). Ví dụ Apache Commons IO FileUtils đến lớp tập tin? – Ingo
ah ... chỉnh sửa của bạn cũng trả lời câu hỏi bổ sung của tôi. Cảm ơn một lần nữa. – Ingo