我正在寻找一种构建不可变类的有效方法,就像Java的String类一样。
最佳答案
所有字段必须为private
,最好是final
确保班级不能
覆盖-使课程最终完成,
或使用静态工厂并保持
私人建造者
字段必须从
建设者/工厂
不要提供任何二传手
领域
当心收藏。采用Collections.unmodifiable*
。另外,集合应仅包含不可变的对象
所有吸气剂必须提供
不可变对象或使用defensive copying
不要提供任何方法
改变内部状态
宾语。
Tom Hawtin指出final
可以是可选的。 String
class
具有仅在调用哈希函数时分配的缓存hash
var。
关于java - 使对象不可变的可能方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1017140/