字段vs字段和新对象

时间:2018-01-09 13:48:48

标签: java variables object field

我想知道这两种情况之间的差异是什么:

class Cell
{
    Messages msg;

    public void getMessage()
    {
        msg.getMessage();
    }
}

class Cell
{
    Messages msg = new Messages();

    public void getMessage()
    {
        msg.getMessage();
    }
}

我知道在第一个例子中我只声明了字段,而在第二个例子中我声明了字段,对象和指定对象到字段。但是在这两种情况下我都可以在.getMessage()类中使用Cell方法,那么什么是差异,我应该使用什么?

1 个答案:

答案 0 :(得分:6)

在第二种情况下,Messages成员将在Cell实例化时实例化。这意味着当您在代码中的某处写msg = new Messages()时,将调用new Cell()

在第一种情况下,如果您实例化Cell(例如new Cell())并调用getMessage()方法而不先向msg设置任何内容,那么您可以ll得到NullPointerException,因为默认情况下对象成员的值为null。在您的第二个示例中编写的代码中不会出现这种情况。

您应该使用哪种解决方案取决于您要对代码执行的操作。两者都是可以接受的,我担心这一点主要是基于意见的。您可以在此处找到有关类似问题的更多详细信息:Best practice for initializing an ArrayList field in Java