Tengo una clase abstracta de Java que necesita tener un método onMessage
para implementarse. Sé que un cierre puede implementar fácilmente una interfaz Java usando la palabra clave as
, pero ¿cómo puede extender una clase abstracta de Java?¿Puede un cierre Groovy extender una clase abstracta
Si no puede ampliarlo, ¿cuál es el mejor trabajo posible en estos casos en Groovy?
Aquí está mi uso en Java, estoy buscando algo similar que se pueda hacer en Groovy.
MessageCallback callback = new MessageCallback() {
@Override
public void onMessage(Message message) {
dosomething();
}
};
donde el mensaje de devolución de llamada es mi clase abstracta que me gustaría utilizar de una manera similar en Groovy.
Eso debería funcionar. De hecho, si MessageCallback solo tiene un método, puede hacer esto: callback def = {message -> doSomething()} como MessageCallback –
@tim_yates Funcionó parcialmente, la clase messagecallback tenía un método "hecho" que cuando invocaba dentro el cierre, recibí la excepción del método faltante. En Java solo uso done(), ¿debería usar alguna otra sintaxis en Groovy? – Abe
Ahhh, si necesita volver a llamar a la clase Proxied las cosas se complican ... Voy a echar un vistazo y ver si puedo encontrar algo mejor que escribir una clase concreta con métodos vacíos y luego sobrescribirlos en ' metaClass' (que es la única otra solución en la que puedo pensar actualmente) –