簡體   English   中英

場與場和新對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM