簡體   English   中英

Java - 在構造函數中設置后,任何使變量不可修改的方法?

[英]Java - Any way to make variable unmodifiable after being set in the constructor?

我有一個成員變量,在類中我想確保在構造函數中設置后沒有任何更改。 所以,它看起來像這樣:

public class MyClass
{
    private String myVar = null;

    public MyClass(DataObj dataObj)
    {
        myVar = dataObj.getFinalVarValue();
        //at this point I don't want anything to be able change the value of myVar
    }

    ....
}

我的第一個想法是看到我可以將final修飾符添加到變量中,但編譯器抱怨為最終字段賦值。 有可能做到這一點嗎?

編譯器抱怨(在構造函數中),因為您已經通過編寫提供了初始化

private String myVar = null;

刪除' = null '部分。 添加final並在構造函數中指定值。

public class MyClass
{
    private final String myVar;

    public MyClass(DataObj dataObj)
    {
        myVar = dataObj.getFinalVarValue(); // the only assignment/init happens here.
    }

    ....
}

將其設為private ,然后不包含setter。 只要你在類方法中永遠不改變它,它就是不可變的。

字符串對象已經是不可變的。 因此添加私有最終修改器就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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