【发布时间】:2016-06-22 04:20:37
【问题描述】:
这段代码对我来说没有意义
class MyClass{
MyClass obj = new MyClass();
public static void main(String[] args){
MyClass obj = new MyClass();
}
}
所以问题是类定义如何包含它自己的对象创建?
例如像上面的代码MyClass 实例变量obj 创建它自己的对象。在这里,我想了解它是否有效,那么它在幕后实际上是如何工作的,而且这样做有什么好处..
需要详细解释..提前谢谢
【问题讨论】:
-
这很容易,问题是,你最终会递归创建无限数量的对象,你的资源很快就会耗尽,应用程序会崩溃。
-
您不会从这种方式中受益,因为您将遇到
StackOverflow,因为MyClass的每个实例都会生成MyClass的新实例。这个无限的一代从你的主开始。我猜你的意思是有一个static MyClass obj变量,这可能是单例类设计的指标。 -
@AbdulRaziq 想象一下当前初始化类
MyClass时会发生什么。它有一个变量MyClass obj,它被初始化了。它为刚刚初始化的MyClass创建一个MyClass的新实例。这个新实例有什么作用?它还包含一个变量MyClass obj,它也被初始化。这将一直持续到 jvm 因当前设计而崩溃。 -
@KevinEsche 第二个答案?它们没有内在的顺序。
-
所以@AbdulRaziq,我假设您正在查看另一个问题,即 Hovercraft Full Of Eels 的答案。他对该代码有注释,
// have fun!。你试过了吗?他这样做是为了让人们可以看到会发生什么。你看到了吗?