我对java代码感到困惑吗?
问题描述:
这个代码是没有意义的,我我对java代码感到困惑吗?
class MyClass{
MyClass obj = new MyClass();
public static void main(String[] args){
MyClass obj = new MyClass();
}
}
所以,问题是如何类定义包含自己的创建对象? 例如像上面的代码MyClass
实例变量obj
创建它自己的对象。在这里我想了解它是否可行,那么它现实背后的实际效果如何,以及这样做的好处是什么.. 需要详细解释..预先感谢
答
事情是,类不区分你是否创建它自己的类或其他任何对象。 它的工作原理与任何其他对象的构造在幕后,所以用领域初始化启动,在这种特殊情况下,用线:
MyClass obj = new MyClass();
而在这之后在评论中提到的人就开始这样做了并再次导致堆栈溢出。
+0
谢谢了! –
答
您不会在Myclass定义中启动MyClass。
得到一个看看这篇文章从比尔,构造基础: http://www.javaworld.com/article/2076614/core-java/object-initialization-in-java.html
class MyClass{
private int value;
public MyClass() {
value = 1234;
}
public MyClass(int setValue) {
value = setValue;
}
}
class Example3 {
public static void main(String[] args) {
// Create a MyClass object with default value
MyClass example1 = new MyClass();
// Create a MyClass with value 355
MyClass example2 = new MyClass(355);
}
}
我希望这有助于。
它可以很容易,问题是,你会最终得到无限量的对象被递归创建,你的资源很快就会耗尽,应用程序将崩溃。 – Stultuske
你不会从这种方式中受益,因为你将会遇到'*',因为'MyClass'的每个实例都将生成一个新的'MyClass'实例。这无限的一代开始与你的主。我想你的意思是有一个'静态MyClass obj'变量,这可能是一个单身类设计的指标。 – SomeJavaGuy
所以假设我们有两个类MyClass和MyClass2。在MyClass2中是我创建MyClass的对象的主要方法..它也将*? –