字段 vs 字段和新对象
Field vs field and new object
我想知道这两种情况有什么区别:
class Cell
{
Messages msg;
public void getMessage()
{
msg.getMessage();
}
}
和:
class Cell
{
Messages msg = new Messages();
public void getMessage()
{
msg.getMessage();
}
}
我知道在第一个示例中我只声明了字段,而在第二个示例中我声明了字段、对象并将对象分配给字段。但是在这两种情况下我都可以在Cell
class中使用.getMessage()
方法,那么什么是差异,我应该使用什么?
在第二种情况下,Messages
成员将在 Cell
实例化时实例化。这意味着当您在代码中的某处编写 new Cell()
时,将调用 msg = new Messages()
。
在第一种情况下,如果您实例化 Cell
(例如使用 new Cell()
)并调用 getMessage()
方法而不首先设置任何 msg
,您你会得到一个 NullPointerException
因为默认情况下对象成员的值是 null
。在您在第二个示例中编写的代码中不会出现这种情况。
您应该使用哪种解决方案取决于您要对代码执行的操作。两者都是可以接受的,我担心这一点主要是基于意见。您可以在此处找到有关类似问题的更多详细信息:.
我想知道这两种情况有什么区别:
class Cell
{
Messages msg;
public void getMessage()
{
msg.getMessage();
}
}
和:
class Cell
{
Messages msg = new Messages();
public void getMessage()
{
msg.getMessage();
}
}
我知道在第一个示例中我只声明了字段,而在第二个示例中我声明了字段、对象并将对象分配给字段。但是在这两种情况下我都可以在Cell
class中使用.getMessage()
方法,那么什么是差异,我应该使用什么?
在第二种情况下,Messages
成员将在 Cell
实例化时实例化。这意味着当您在代码中的某处编写 new Cell()
时,将调用 msg = new Messages()
。
在第一种情况下,如果您实例化 Cell
(例如使用 new Cell()
)并调用 getMessage()
方法而不首先设置任何 msg
,您你会得到一个 NullPointerException
因为默认情况下对象成员的值是 null
。在您在第二个示例中编写的代码中不会出现这种情况。
您应该使用哪种解决方案取决于您要对代码执行的操作。两者都是可以接受的,我担心这一点主要是基于意见。您可以在此处找到有关类似问题的更多详细信息: