Tôi đã có Giao diện Java này chỉ với một phương thức.Tương đương Groovy cho Java 8 Biểu thức Lambda
// Java Interface
public interface AuditorAware {
Auditor getCurrentAuditor();
}
Tôi đã sử dụng biểu thức Lambda Java 8 để tạo ra độ bóng của AuditorAware
như sau.
// Java 8 Lambda to create instance of AuditorAware
public AuditorAware currentAuditor() {
return() -> AuditorContextHolder.getAuditor();
}
Tôi đang cố gắng viết trên thực hiện Java trong Groovy.
Tôi thấy có rất nhiều cách để triển khai giao diện trong groovy như được hiển thị trong tài liệu Groovy ways to implement interfaces này.
Tôi đã triển khai bên trên mã Java để tương đương bằng cách sử dụng giao diện triển khai thực hiện với bản đồ như được hiển thị trong tài liệu được đề cập ở trên.
// Groovy Equivalent by "implement interfaces with a map" method
AuditorAware currentAuditor() {
[getCurrentAuditor: AuditorContextHolder.auditor] as AuditorAware
}
Nhưng triển khai giao diện bằng phương pháp đóng dường như ngắn gọn hơn như trong ví dụ tài liệu. Tuy nhiên, khi tôi cố thực hiện như sau, IntelliJ
hiển thị các lỗi cho biết Khối mã không rõ ràng.
// Groovy Equivalent by "implement interfaces with a closure" method ???
AuditorAware currentAuditor() {
{AuditorContextHolder.auditor} as AuditorAware
}
Làm cách nào để thay đổi triển khai Java 8 lambda thành tương đương bằng cách sử dụng phương pháp "triển khai giao diện với đóng"?
có bạn đã cố gắng xác định việc đóng cửa mà không rời khỏi -> out? {-> AuditorContextHolder.auditor} cũng không cần thiết nếu bạn đang sử dụng Groovy 2.2+ –
@DylanBijnagte Cảm ơn. Điều đó hiệu quả. Ngoài ra, tôi đang sử dụng 'groovy 2.3.6'. – TheKojuEffect