NucleousInterviewQuestion

NucleousInterviewQuestion

这是我的代码;导致该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;
  }


这样,您可以引用同一类中的另一个对象。而不创建递归。

07-26 01:52