[英]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
類中使用.getMessage()
方法,那么什么是差異,應該使用什么?
在第二種情況下, Messages
成員將在Cell
實例化時實例化。 這意味着當您在代碼中的某個地方編寫new Cell()
時,將調用msg = new Messages()
。
在第一種情況下,如果實例化Cell
(例如,使用new Cell()
)並調用getMessage()
方法而不先將任何內容設置為msg
,則將得到NullPointerException
因為默認情況下對象成員的值為null
。 在第二個示例中編寫的代碼中就不會出現這種情況。
您應該使用哪種解決方案取決於您要對代碼執行的操作。 兩者都是可以接受的,我擔心這一點主要是基於意見的。 您可以在此處找到有關類似問題的更多詳細信息: 在Java中初始化ArrayList字段的最佳實踐 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.