2016-03-08 121 views
-1

这个代码是没有意义的,我我对java代码感到困惑吗?

class MyClass{ 
    MyClass obj = new MyClass(); 

    public static void main(String[] args){ 
     MyClass obj = new MyClass(); 
    } 
} 

所以,问题是如何类定义包含自己的创建对象? 例如像上面的代码MyClass实例变量obj创建它自己的对象。在这里我想了解它是否可行,那么它现实背后的实际效果如何,以及这样做的好处是什么.. 需要详细解释..预先感谢

+3

它可以很容易,问题是,你会最终得到无限量的对象被递归创建,你的资源很快就会耗尽,应用程序将崩溃。 – Stultuske

+2

你不会从这种方式中受益,因为你将会遇到'StackOverflow',因为'MyClass'的每个实例都将生成一个新的'MyClass'实例。这无限的一代开始与你的主。我想你的意思是有一个'静态MyClass obj'变量,这可能是一个单身类设计的指标。 – SomeJavaGuy

+0

所以假设我们有两个类MyClass和MyClass2。在MyClass2中是我创建MyClass的对象的主要方法..它也将stackOverFlow? –

回答

0

事情是,类不区分你是否创建它自己的类或其他任何对象。 它的工作原理与任何其他对象的构造在幕后,所以用领域初始化启动,在这种特殊情况下,用线:

MyClass obj = new MyClass(); 

而在这之后在评论中提到的人就开始这样做了并再次导致堆栈溢出。

+0

谢谢了! –

-2

您不会在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); 
    } 
} 

我希望这有助于。