[解決済み] クラス内のプライベートフィールドを変更できないようにするにはどうすればよいですか?
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);
}
関連
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] Javaで文字列を分割する方法
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] print()を使用してクラスのインスタンスを表示するには?
-
[解決済み] Pythonにはクラス内に「プライベート」変数がある?
-
[解決済み] JavaScriptのプライベートメソッド
-
[解決済み】Javaで異なるクラスからプライベートフィールドの値を読み取る方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java の例外が発生しました java
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
jd-gui Java Exceptionが発生しました。
-
Javaクラスローダーにソースコードから潜り込む
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
サーブレットクラスのインスタンス化エラーの解決法
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
Java(1)仕上げの基本概念+eclipseのインストール構成