Ho una classe Java astratta che deve essere implementata con un metodo onMessage
. So che una chiusura può facilmente implementare un'interfaccia Java usando la parola chiave as
, ma come può estendere una classe Java astratta?Una chiusura Groovy può estendere una classe astratta
Se non è possibile estenderlo, allora quale è il miglior lavoro possibile in questi casi in Groovy?
Ecco il mio utilizzo in Java, sto cercando qualcosa di simile che possa essere fatto in Groovy.
MessageCallback callback = new MessageCallback() {
@Override
public void onMessage(Message message) {
dosomething();
}
};
Dove messaggio di richiamata è la mia classe astratta che vorrei utilizzare in modo simile in Groovy.
Che dovrebbe funzionare. Infatti, se MessageCallback ha solo un metodo, puoi farlo: def callback = {message -> doSomething()} come MessageCallback –
@tim_yates Ha funzionato parzialmente, la classe messagecallback aveva un metodo "done" che quando ho invocato all'interno la chiusura, ho ottenuto l'eccezione metodo mancante. In java uso solo done(), dovrei usare qualche altra sintassi in Groovy? – Abe
Ahhh, se hai bisogno di richiamare la classe Proxied le cose si complicano ... darò un'occhiata e vedrò se riesco a trovare qualcosa di meglio che scrivere una classe concreta con metodi vuoti, e poi sovrascriverli nella ' metaClass' (che è l'unica altra soluzione che posso attualmente pensare) –