制作子类时的StackOverflowError

Hyd*_*xia 1 java stack-overflow recursion javafx subclass

我的超类:

public class Node {
    public MyPoint myPoint = new MyPoint();
}
Run Code Online (Sandbox Code Playgroud)

我的空子类:

public class MyPoint extends Node {

}
Run Code Online (Sandbox Code Playgroud)

下面的问题是最接近我能找到的问题,但是在这种情况下,我的子类是空的,没有构造函数.

从超类调用子类构造函数

我收到以下错误:

Exception in thread "JavaFX Application Thread" java.lang.StackOverflowError
...
at engine.MyPoint.<init>(MyPoint.java:3)
at engine.Node.<init>(Node.java:28)
at engine.MyPoint.<init>(MyPoint.java:3)
at engine.Node.<init>(Node.java:28)
at engine.MyPoint.<init>(MyPoint.java:3)
at engine.Node.<init>(Node.java:28)
...
Run Code Online (Sandbox Code Playgroud)

我不明白为什么以及如何在我看来没有递归.这怎么样

public MyPoint myPoint = new MyPoint();
Run Code Online (Sandbox Code Playgroud)

与此不同(例如在JavaFX中),创建新组时不会给我错误吗?

public Group group = new Group();
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 5

MyPoint扩展Node,因此当您创建实例时MyPoint,您首先必须初始化其父实例Node.这意味着初始化myPiont成员等等,直到你得到一个StackOverflowError.

这里没有足够的上下文来建议更改,但您可能应该失去此成员.

  • "MyPoint"是特定类型的"Node".所以每次你创建一个`MyPoint`时,它里面都有一个`MyPoint`,里面有一个'MyPoint',里面有一个'MyPoint` ......直到堆栈溢出. (2认同)