Java - 在构造函数中设置后,任何使变量不可修改的方法?

dnc*_*253 3 java final

我有一个成员变量,在类中我想确保在构造函数中设置后没有任何更改.所以,它看起来像这样:

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
    }

    ....
}
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是看到我可以将final修饰符添加到变量中,但编译器抱怨为最终字段赋值.有可能做到这一点吗?

Mar*_*inK 14

编译器抱怨(在构造函数中),因为您已经通过编写提供了初始化

private String myVar = null;
Run Code Online (Sandbox Code Playgroud)

删除' = null'部分.final在构造函数中添加并赋值.

public class MyClass
{
    private final String myVar;

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

    ....
}
Run Code Online (Sandbox Code Playgroud)