请帮助我找到为什么在下面的代码中运行时为什么会得到StackOverflowError异常。
public class HelloParent {
HelloParent checking = new HelloParent();
public class Hello{
public void printFunction() {
checking.printHW("hello ");
}
}
private void printHW(String s){
System.out.println(s);
}
public static void main(String[] args) {
HelloParent helloParent = new HelloParent();
Hello hello = helloParent.new Hello();
hello.printFunction();
}
}
在这里,我尝试从内部类访问父类方法。
最佳答案
HelloParent
有一个实例字段checking
,它的声明和初始化如下:
HelloParent checking = new HelloParent();
该代码插入每个
HelloParent
构造函数*的开头。该代码调用HelloParent
构造函数,因此再次运行,因此再次调用构造函数,因此再次运行,依此类推。您不能有一个实例字段来调用其定义的类的构造函数。
*从技术上讲,在
super()
的调用(在这种情况下是隐式的)之后。关于java - 从内部类访问父方法时发生StackOverflowError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44106817/