java - JAVA如何允许类内的类实例化?
问题描述
我是 JAVA 新手。我想知道以下构造:
class MyClass {
private MyClass myClass;
//whatever
}
这怎么不会导致无限递归?仅仅是因为后期绑定吗?
解决方案
取决于问题到底是什么。有两个原因:一个是静态的(为什么会编译),一个是动态的(为什么会运行):
首先,在 Java 中,您永远不需要提前知道对象的大小,因为所有对象都分配在堆上,并且您不能在另一个对象中拥有一个对象(您只能存储对事物的引用,而不是事物本身)。
其次,代码中的字段是使用空引用创建的。要在 Java 中创建一个新实例,您总是需要
new
因此,您的示例可以编译并运行。如果您将行更改为:
private MyClass myClass = new MyClass();
尝试初始化时会出现堆栈溢出MyClass
。
推荐阅读
- jquery - 如何将数据表中 columnDefs 的目标定义为“最后一个”?
- javascript - InversifyJS - 注入服务来表达中间件
- django - Django不对称关系:返回相交
- javascript - 创建一个包含多个对象的对象并将它们推送到 Javascript 中的数组
- javascript - React google place 自动完成不提供 photo_ref
- r - 创建一个计算公式的列,其中的数字来自例如 row[a] + column[a]
- c++ - 最简单的并发 C++11 字符串键控映射
- java - JAVAFX 如何使 Vbox 在 BorderPane 的右侧居中
- mysql - 如何创建此正确连接
- reactjs - 最新的 Babel (@babel/core v7) 错误“未定义导出”