interface Lopzik{
void petrol();
}
public class Test{
public static void main(String[] args) {
Lopzik lopzik = new Lopzik(){
@Override
public void petrol() {
System.out.println("ouch");
}
public String toString() {
return "poncho";
}
public String kopo(){return "last";} //можно как то вызвать данный метод тут? (номер 2)
};
lopzik.petrol();
// номер 2
}
}
Как можно вызвать метод kopo() в методе main, если данный метод не существует в Lopzik{} а внедрен во время определения анонимного класса? Или придется использовать его только в рамках тела анонимного класса?
Внимание: Если данный вопрос вдруг оказался дубликатом, тогда просто вставьте ссылку в комментах, без негативных голосов. Если содержание ссылки дает исчерпывающий ответ, тогда я свой вопрос удалю.
Вы сами ограничили тип переменной, когда указали конкретный тип Lopzik lopzik = ...
Если используется Java 10 или выше, то можно просто написать var lopzik = ... и тип выведется сам с нужными методами.
Если используется Java ниже 10 версии, то можно создать интерфейс с дополнительным методом String kopo() и наследовать его при создании анонимного класса.
В крайнем случае можно через вызвать метод так:
(String) lopzik.getClass().getMethod("kopo").invoke(lopzik), но это нежелательно.