getterを使用してフィールドを非公開にすることは、一般的なケース(データ隠蔽、デカップリング、blah、blah、blah)では多くの利点があることを知っています。私が求めているのは、具体的にはimmutableクラスに関連しています。不変オブジェクトのパブリックフィールドの代わりにゲッターを使う理由は?
のは、私は例えば、REST応答からデータを格納するためのモデルクラスを作成したとしましょう:
public final class Profile {
private final int id;
private final String name;
private final String info;
private final String location;
private final URI avatar;
private final Gender gender;
// about 10 more fields
}
は、クラスとそのフィールドは、すべて最終的なもので、変更または上書きすることはできません。各フィールドは不変クラスのインスタンスであり、コンストラクタで検証されます。また、すべてのフィールドは公開されている必要があります(データ非表示はありません)。
このような場合、フィールドをパブリックにするのではなく、すべてのフィールドにゲッターを追加するために、クラスのサイズを3倍にすることができますか?