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
}
}
如果这个方法在 Lopzik{} 中不存在,但是在定义匿名类的过程中被注入,你怎么能在 main 方法中调用 kopo() 方法呢?还是只能在匿名类的主体中使用它?
注意:如果突然发现这个问题是重复的,那么只需将链接粘贴在评论中,不要投反对票。如果链接的内容给出了详尽的答案,那么我将删除我的问题。
当您指定具体类型时,您自己限制了变量的类型
Lopzik lopzik = ...选项1
如果使用 Java 10 或更高版本,那么您可以简单地编写
var lopzik = ...,并且类型将通过必要的方法推断自己。选项 2
如果 Java 使用版本 10 以下,那么您可以创建一个带有附加方法的接口,
String kopo()并在创建匿名类时继承它。选项 3
作为最后的手段,您可以像这样调用该方法:
(String) lopzik.getClass().getMethod("kopo").invoke(lopzik),但这是不可取的。