在Java中创建空对象?

时间:2013-11-11 23:58:42

标签: java object

你是怎么做的?它就这么简单:

Name myName = new Name();

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

3 个答案:

答案 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时,也会分配这些字段的内存。因此,即使你没有为它们赋值,它们实际上也存在于内存中,但根本没有初始化。

相关问题