Tôi có một lớp Java trừu tượng cần phải có một phương thức onMessage
để được triển khai. Tôi biết rằng việc đóng cửa có thể dễ dàng thực hiện một giao diện Java bằng cách sử dụng từ khóa as
, nhưng làm thế nào nó có thể mở rộng một lớp Java trừu tượng?Có thể một kết thúc Groovy mở rộng một lớp trừu tượng
Nếu nó không thể mở rộng, thì công việc nào tốt nhất có thể trong các trường hợp như vậy trong Groovy?
Đây là cách sử dụng của tôi trong Java, tôi đang tìm một cái gì đó tương tự có thể được thực hiện trong Groovy.
MessageCallback callback = new MessageCallback() {
@Override
public void onMessage(Message message) {
dosomething();
}
};
Trường hợp gọi lại thư là lớp trừu tượng của tôi mà tôi muốn sử dụng theo cách tương tự trong Groovy.
Điều đó sẽ hiệu quả. Trong thực tế, nếu MessageCallback chỉ có một phương thức, bạn có thể thực hiện điều này: def callback = {message -> doSomething()} như MessageCallback –
@tim_yates Nó hoạt động một phần, lớp messagecallback có phương thức "done" khi tôi gọi bên trong đóng cửa, tôi đã nhận được ngoại lệ phương pháp còn thiếu. Trong java tôi chỉ cần sử dụng done(), tôi có nên sử dụng một số cú pháp khác trong Groovy không? – Abe
Ahhh, nếu bạn cần gọi lại lớp Proxied, mọi thứ trở nên phức tạp ... Tôi sẽ xem xét xem liệu tôi có thể tìm ra thứ gì tốt hơn là viết một lớp cụ thể với các phương thức trống không, và sau đó ghi đè lên những thứ này trong ' metaClass' (là giải pháp duy nhất khác mà tôi có thể nghĩ đến) –