Gre*_*ory 1 java variables field object
我想知道这两种情况之间的差异是什么:
class Cell
{
Messages msg;
public void getMessage()
{
msg.getMessage();
}
}
Run Code Online (Sandbox Code Playgroud)
和:
class Cell
{
Messages msg = new Messages();
public void getMessage()
{
msg.getMessage();
}
}
Run Code Online (Sandbox Code Playgroud)
我知道在第一个例子中我只声明了字段,而在第二个例子中我声明了字段,对象和指定对象到字段.但是在这两种情况下我都可以.getMessage()在Cell课堂上使用方法,那么什么是差异?我应该使用什么?
在第二种情况下,Messages成员将在实例化时Cell实例化.这意味着msg = new Messages()当你new Cell()在代码中的某个地方写字时会被调用.
在第一种情况下,如果你实例化Cell(new Cell()例如)并调用getMessage()方法而不先设置任何东西msg,那么你将得到一个,NullPointerException因为null默认情况下对象成员的值.在第二个示例中编写的代码中不会出现这种情况.
您应该使用哪种解决方案取决于您希望如何处理代码.两者都是可以接受的,我担心这一点主要是基于意见的.您可以在此处找到有关类似问题的更多详细信息:在Java中初始化ArrayList字段的最佳实践.