1. ホーム
  2. java

[解決済み] クラス内のプライベートフィールドを変更できないようにするにはどうすればよいですか?

2022-04-24 03:50:43

質問

このようなクラスがあると想像してください。

public class Test
{
  private String[] arr = new String[]{"1","2"};    

  public String[] getArr() 
  {
    return arr;
  }
}

さて、上記のクラスを使用する別のクラスがあります。

Test test = new Test();
test.getArr()[0] ="some value!"; //!!!

つまり、あるクラスのプライベートフィールドに外部からアクセスしてしまったのです!これは問題です。 どうすればこれを防ぐことができるでしょうか?つまり、どうすればこの配列をイミュータブルにできるのでしょうか?これは、すべてのゲッターメソッドで、プライベートフィールドにアクセスできるようになることを意味するのでしょうか?(Guavaのようなライブラリは必要ありません。私はこれを行うための正しい方法を知る必要があるだけです)。

どのように解決するのですか?

を返す必要があります。 コピー の配列になります。

public String[] getArr() {
  return arr == null ? null : Arrays.copyOf(arr, arr.length);
}