我正在寻找一种构建不可变类的有效方法,就像Java的String类一样。

最佳答案

所有字段必须为
private,最好是final
确保班级不能
覆盖-使课程最终完成,
或使用静态工厂并保持
私人建造者
字段必须从
建设者/工厂
不要提供任何二传手
领域
当心收藏。采用
Collections.unmodifiable*。另外,集合应仅包含不可变的对象
所有吸气剂必须提供
不可变对象或使用defensive copying
不要提供任何方法
改变内部状态
宾语。


Tom Hawtin指出final可以是可选的。 String class具有仅在调用哈希函数时分配的缓存hash var。

关于java - 使对象不可变的可能方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1017140/

10-10 05:18