【问题标题】:Field vs field and new object字段与字段和新对象
【发布时间】:2018-01-09 13:48:47
【问题描述】:

我想知道这两种情况有什么区别:

class Cell
{
    Messages msg;

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

和:

class Cell
{
    Messages msg = new Messages();

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

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

【问题讨论】:

    标签: java variables object field


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 2016-05-10
      • 2021-01-09
      • 2015-12-24
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      相关资源
      最近更新 更多