use*_*434 3 java immutability effective-java
在Effective Java中,Bloch建议在使对象不可变时使所有字段成为最终字段.
有必要这样做吗?不会只给出访问器方法使它不可变.
例如
class A {
private int x;
A (int x) {
this.x = x;
}
}
Run Code Online (Sandbox Code Playgroud)
上述类是不可变的,即使我不申报x的final吗?我错过了什么吗?
除了@ Bozho的观点之外,声明一个字段final意味着它可以安全地访问而无需任何同步.
相反,如果字段不final存在,则如果没有正确同步,则另一个线程在访问它时会看到该字段的异常值存在很小的风险.即使在对象构造之后没有任何改变字段的值,也会发生这种情况!
| 归档时间: |
|
| 查看次数: |
912 次 |
| 最近记录: |