为什么 Final 字段在 Java 中不能是易失性的?
我想了解为什么声明为最终的引用不能声明为易失性。SO上也有类似的问题[为什么在Java中,对象成员变量不能既是最终的又是易失性的?
[1]:为什么Object成员变量在Java中不能既是最终的又是易失性的?但我不确定最终变量是否在这个答案中被理解。
现在,最终变量的状态在初始化后绝对可以更改。只有引用不能初始化为另一个对象。
例如,考虑以下成员变量
final StringBuilder sb = new StringBuilder("CAT");
现在另一个线程将 sb 更改为 :
sb.append("S");
如果此变量是非易失性变量,则此更改是否可用于每个 Java 内存模型的不同线程?
编辑:我将StringBuffer更改为StringBuilder,以便某些人明确我的观点。