你是怎么做的?它就这么简单:
Name myName = new Name();
我有点困惑。它应该是一个没有实例变量的类。我只需要“创建一个空对象”。当然,构造函数也是空的。
答案 0 :(得分:3)
如果Name
有无参数构造函数,请确定。它是否为“空”取决于构造函数的作用或默认值。
无论如何你如何定义“空对象”?
例如,如果你想要一个变量但又不想让它实际拥有一个对象,你可以在不初始化它的情况下声明变量:
Name myName;
在这种情况下,myName
将为null
,但类型为Name
,可以在以后使用(一旦分配了值)。
所有变量本身都指向内存中存在“对象”的位置。因此Name myName
之类的东西不会“创建”一个对象,它只是创建指向内存位置的指针。 new Name()
实际上通过调用其构造函数来创建对象。当像你的例子一样使用时,后半部分创建对象,然后前半部分指向存在对象的内存中的位置。
答案 1 :(得分:3)
在java术语中,“空对象”非常模糊。我可以解释为:
Object empty = new Object();
这是关于你可以创造的最空的对象。
但是在你的例子中,
Name myName = new Name();
这将基于您在默认构造函数中放置的任何代码创建一个对象。 (我想如果你把所有东西都设置为默认值,那就很空了)
答案 2 :(得分:1)
这取决于你的意思是空的。你所做的是实例化一个对象。如果对象构造函数初始化Name对象的字段,则对象字段具有分配给它们的值。当您调用new时,也会分配这些字段的内存。因此,即使你没有为它们赋值,它们实际上也存在于内存中,但根本没有初始化。