在 Java 中创建空对象?

Jav*_*ewb 4 java object

你打算怎么做?是不是就这么简单:

Name myName = new Name();
Run Code Online (Sandbox Code Playgroud)

我有点困惑。它应该是一个没有实例变量的类。我只需要“创建一个空对象”。构造函数当然也将为空。

Dav*_*vid 5

如果Name有无参数构造函数,当然可以。它是否为“空”取决于构造函数的作用或它可能具有的默认值。

无论如何,你如何定义“空对象”?

例如,如果您想要一个变量但不希望它实际上有一个对象,您可以只声明该变量而不初始化它:

Name myName;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,myName将是null(或“未分配”?取决于上下文),但将是类型Name,并且可以在以后这样使用(一旦为其分配了值)。

变量本身所做的只是指向内存中“对象”存在的位置。所以类似的东西Name myName不会“创建”对象,它只是创建指向内存位置的指针。 new Name()实际上通过调用其构造函数来创建一个对象。当像在您的示例中一样一起使用时,后半部分创建对象,然后前半部分指向对象所在的内存位置。


yam*_*tes 5

在 Java 术语中,“空对象”非常含糊。我可以这样解释:

Object empty = new Object();
Run Code Online (Sandbox Code Playgroud)

这是关于您可以创建的最空的对象。

但是在你的例子中,

Name myName = new Name();
Run Code Online (Sandbox Code Playgroud)

这将根据您放入默认构造函数的任何代码创建一个对象。(我想如果您将所有内容都设置为默认值,则非常空)