JAVA 如何允许 class 在 class 中实例化?

How does JAVA allow class instantiation within the class?

我是 JAVA 的新手。我想知道以下结构:

class MyClass {
    private MyClass myClass;
//whatever
}

这怎么不会导致无限递归?是否只是因为后期绑定?

myClass的值默认不会被实例化。默认情况下它将是 null.

取决于具体问题是什么。有两个原因:一个是静态的(为什么会编译),一个是动态的(为什么会运行):

  • 首先,在Java中你永远不需要知道对象的大小 advance,因为所有对象都分配在堆上,你不能 在另一个对象中有一个对象(您只能存储对 事物,而不是事物本身)。

  • 其次,代码中的字段是使用空引用创建的。到 在 Java 中创建一个新实例,你总是需要 new

因此,您的示例可以编译并运行。如果您将行更改为:

private MyClass myClass = new MyClass();

尝试初始化时会发生堆栈溢出 MyClass