这是我正在编写的程序。我在运行它时收到 StackOverFlowError
异常:
public class maininherit {
maininherit h = new maininherit() {
@Override
public void mai() {
System.out.print("inner");
}
};
public static void main(String[] args){
maininherit t=new maininherit();
t.mai();
}
public void mai(){
System.out.print("hellllll");
h.mai();
}
}
只有当我在内部类中使用 maininherit
类作为引用时,我才会收到 StackOverflowError
。如果我使用其他类,我不会收到该错误。谁能给我澄清一下?
抱歉,我非常感谢你的回答,但我怀疑我不知道是否合理,只有当我在同一个类的构造函数中创建实例时,才可能重复初始化。然后怎么可能有多个初始化?
最佳答案
您的内部类的实现只是覆盖了maininherit 类的一部分。所以... 您初始化类 maininherit,然后初始化变量 h。 New 运算符被调用,然后...内部类 init maininherit 再次需要设置 h 变量。
您的代码是初始化 h 变量的无限循环。
关于java - 在 Java 中获取 StackOverFlowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115704/