私は次のクエリを持っています、私はJava不変クラスの概念を調べていて、次の分析を思いつきました。
- すべてのフィールドはプライベートで、できれば最終的なものでなければなりません
- クラスをオーバーライドできないようにする-クラスをfinalにするか、静的ファクトリを使用してコンストラクタをプライベートに保つ
- フィールドはコンストラクタ/ファクトリから入力する必要があります
- フィールドにセッターを提供しないでください
- コレクションに気をつけてください。Collections.unmodizable*を使用します。
- また、コレクションには不変オブジェクトのみを含める必要があります
- すべてのゲッターは不変オブジェクトを提供するか、防御コピーを使用する必要があります
- オブジェクトの内部状態を変更するメソッドを提供しないでください。
今、私は次のクラスを持っています。
public final class Bill {
private final int amount;
private final DateTime dateTime;
private final List<Integers> orders;
}
不変クラスとして作成する方法を教えてください。