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