我有以下查询,我正在研究 Java 不可变类概念并提出以下分析..
- 所有字段必须是私有的,最好是最终的
- 确保类不能被覆盖 - 使类最终,或使用静态工厂并保持构造函数私有
- 必须从构造函数/工厂填充字段
- 不要为字段提供任何设置器
- 注意收藏。使用 Collections.unmodifiable*。
- 此外,集合应该只包含不可变对象
- 所有 getter 必须提供不可变对象或使用防御性复制
- 不要提供任何改变对象内部状态的方法。
现在我有以下课程..
public final class Bill {
private final int amount;
private final DateTime dateTime;
private final List<Integers> orders;
}
请告知如何将其制成不可变类。