我有以下查詢,我會通過Java不變類的概念,並提出瞭如下分析..對於不可改變的類
- 所有字段必須是私有的,最好最後
- 確保類不能被覆蓋 - 使課堂最後,或者使用靜態工廠,並保持建設者私人
- 字段必須從構造/工廠進行填充
- 不要爲字段提供任何setter方法
- 注意收藏。使用Collections.unmodifiable *。
- 此外,收藏應該只包含一個不可改變的對象
- 所有干將必須提供不可變對象或使用保護性拷貝
- 不提供改變對象的內部狀態的任何方法。
現在我有下面的類..
public final class Bill {
private final int amount;
private final DateTime dateTime;
private final List<Integers> orders;
}
請告知如何將它做成不可變類。
並非所有這些技術上都是必需的 - 例如,'String.hashCode()'是懶散計算的,它的'hashCode'字段不是最終的,但是'String'即使如此也被認爲是不可變的。 – 2012-08-09 16:40:55
>其hashCode字段不是最終的 這就是爲什麼提到這些字段是最好是最終的。只要它們不能通過外部消息傳遞給對象來修改,那麼這些成員就不是最終的,對嗎? – Vikdor 2012-08-09 16:46:55