java - 字段 vs 字段和新对象

标签 java variables object field

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

class Cell
{
    Messages msg;

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

和:

class Cell
{
    Messages msg = new Messages();

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

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

最佳答案

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

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

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

关于java - 字段 vs 字段和新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48169630/

相关文章:

java - 如何检查抽象对象的实例是否属于特定的子类

java - 准备好的语句的性能调整

java - 泛型与方法重载

java - 从 Java 调用 AS400 RPG

jQuery 将变量从一个函数传递到另一个函数

javascript - 对象被 JavaScript 中的后续对象覆盖

java - JTree:如何添加节点的属性作为自己的叶子?

c++ - 这是函数调用还是变量声明?

Jquery - 将 .each() 与变量和 IF 语句一起使用

javascript - 使用 React 开发时深度复制对象