【发布时间】:2015-03-23 20:52:21
【问题描述】:
我阅读了this question 关于不可变对象的内容,但留下了一个关于不可变对象和最终字段的问题:
为什么我们需要不可变类中的实例变量是最终的?
例如,考虑这个不可变的类:
public final class Immutable
{
private final int someVal;
public Immutable(int someVal)
{
this.someVal= someVal;
}
public int getVal() {
return val;
}
}
如果在上面的代码中没有设置方法,并且实例变量只在构造函数中设置,为什么要求实例变量声明为final?
【问题讨论】:
-
再次阅读引用的问题,不是实例变量必须是最终的,而是类。
-
是的,我读到了,但我的问题是为什么该类中的实例变量应该是最终的?
-
也许是这样:它没有必须是最终的,但它应该是最终的(明确表明它不会是修改)。
-
@Marco13 不需要将实例变量设为最终变量,但我需要将其设为最终变量。所以这只是编码的一个好习惯
标签: java immutability final