【发布时间】:2011-09-21 13:52:05
【问题描述】:
我们可以创建一个不可变对象而不使所有字段都为 final 吗?
如果可能的话,举几个例子会有所帮助。
【问题讨论】:
-
使用
final只会帮助编译器捕获一些错误。一个类可以在 final 字段中是可变的,而在没有它们的情况下是不可变的。但是,如果你有一个不可变的类,它不能有final字段,你必须问为什么会这样...... ;) -
为什么不想使用
final字段? -
@DavidCaunt 对字段的惰性评估,例如java.lang.String 的 hashCode。不进入决赛可能很有用,但要正确处理非常棘手。
-
它使它不可变但不是线程安全的!!! docs.oracle.com/javase/specs/jls/se7/html/…
标签: java oop immutability final