http://docs.oracle.com/javase/tutorial/essential/concurrency/imstrat.htmlから:
「セッター」メソッド (フィールドまたはフィールドによって参照されるオブジェクトを変更するメソッド) を提供しないでください。すべてのフィールドを final および private にします。サブクラスがメソッドをオーバーライドすることを許可しないでください。これを行う最も簡単な方法は、クラスを final として宣言することです。より洗練されたアプローチは、コンストラクターをプライベートにし、ファクトリー メソッドでインスタンスを構築することです。インスタンス フィールドに変更可能なオブジェクトへの参照が含まれている場合は、それらのオブジェクトの変更を許可しないでください。変更可能なオブジェクトを変更するメソッドを提供しないでください。変更可能なオブジェクトへの参照を共有しないでください。コンストラクターに渡された外部の変更可能なオブジェクトへの参照を保存しないでください。必要に応じて、コピーを作成し、コピーへの参照を保存します。同様に、
Employee というクラスにはAddress My Question 型のインスタンス変数a
があり
ます: このクラスを不変にするにはどうすればよいですか (条件: getAddress() getter から同じインスタンス変数aを返したい)。
アドレス クラスを不変にする必要がありますか?
注: 防御コピーについては理解していますが、これは使用したくありません