这是我的代码;导致该StackOverflow错误:
public class NucleousInterviewQuestion {
NucleousInterviewQuestion interviewQuestion = new NucleousInterviewQuestion();
public NucleousInterviewQuestion() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
NucleousInterviewQuestion interviewQuestion= new NucleousInterviewQuestion();
}
}
最佳答案
这里:
public class NucleousInterviewQuestion {
NucleousInterviewQuestion interviewQuestion = new NucleousInterviewQuestion();
创建无尽的递归。
关键是:您可以在主方法中调用
new
。执行此操作时,您将运行属于该类的“ init”代码。 “ init”代码包括:字段初始化语句
和构造函数调用
并且您得到了一个包含初始化代码的字段……再次调用
new
;对于同一班从这个意义上讲,“解决方案”是:了解如何初始化类。当然,类可以具有引用其他对象的字段。甚至是同一类别的物体;但随后您需要(例如)以下内容:
public class Example {
Example other;
public Example() {
other = null;
}
public Example(Example other) {
this.other = other;
}
这样,您可以引用同一类中的另一个对象。而不创建递归。