У меня есть абстрактный класс Java, который должен иметь один метод onMessage
, который будет реализован. Я знаю, что закрытие может легко реализовать интерфейс Java, используя ключевое слово as
, но как он может расширить абстрактный класс Java?Может ли расширение Groovy расширить абстрактный класс
Если он не может его продлить, то какова самая лучшая работа в таких случаях в Groovy?
Вот мое использование в Java, я ищу что-то подобное, что можно сделать в Groovy.
MessageCallback callback = new MessageCallback() {
@Override
public void onMessage(Message message) {
dosomething();
}
};
Где сообщение обратного вызова мой абстрактный класс, который я хотел бы использовать аналогичным образом в Groovy.
Это должно сработать. Фактически, если MessageCallback имеет только один метод, вы можете просто сделать это: def callback = {message -> doSomething()} как MessageCallback –
@tim_yates Он работал частично, класс messagecallback имел метод «done», который, когда я вызывал внутри закрытие, я получил исключение исключающего метода. В java я просто использую done(), следует ли использовать другой синтаксис в Groovy? – Abe
Ahhh, если вам нужно перезвонить в класс Proxied, все будет сложно ... Я посмотрю и посмотрю, смогу ли я придумать что-нибудь лучше, чем написать конкретный класс с пустыми методами, а затем переписать их в ' metaClass' (который является единственным другим решением, о котором я могу сейчас думать) –