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
。
我是 JAVA 的新手。我想知道以下结构:
class MyClass {
private MyClass myClass;
//whatever
}
这怎么不会导致无限递归?是否只是因为后期绑定?
myClass
的值默认不会被实例化。默认情况下它将是 null
.
取决于具体问题是什么。有两个原因:一个是静态的(为什么会编译),一个是动态的(为什么会运行):
首先,在Java中你永远不需要知道对象的大小 advance,因为所有对象都分配在堆上,你不能 在另一个对象中有一个对象(您只能存储对 事物,而不是事物本身)。
其次,代码中的字段是使用空引用创建的。到 在 Java 中创建一个新实例,你总是需要
new
因此,您的示例可以编译并运行。如果您将行更改为:
private MyClass myClass = new MyClass();
尝试初始化时会发生堆栈溢出 MyClass
。