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