In 有效的Java http://java.sun.com/docs/books/effective/,Bloch 建议在使对象不可变时将所有字段设为 Final。
有必要这样做吗?仅仅不提供访问器方法不会使其变得不可变。
例如
class A {
private int x;
A (int x) {
this.x = x;
}
}
即使我不声明,上面的类也是不可变的x
as final
正确的 ?我错过了什么吗?
除了@Bozho 的观点之外,将一个字段声明为final
意味着无需任何同步即可安全访问。
相比之下,如果该字段不是final
如果另一个线程在没有正确同步的情况下访问该字段,则存在一个很小的风险,即另一个线程会看到该字段的异常值。即使在对象构造之后没有任何改变字段的值,这种情况也可能发生!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)