私はJavaでArrayListを定義していますが、これはprivate、final、getterのみです。ユーザーは、ArrayListを取得して、その要素を追加または削除することでArrayListを変更できます。どうすればこれを避けることができますか?不変オブジェクトで定義されたArrayListの不変性を保証するにはどうすればよいですか?
3
A
答えて
0
Unmodifiable Listというアプローチがあります。しかし、この変更不可能なクラスは通常のリストを取っており、それはまだ変更可能であるため、制限があります。
final List<String> modifiable = new ArrayList<>();
modifiable.add("Java");
modifiable.add("is");
final List<String> unmodifiable = Collections.unmodifiableList(modifiable);
System.out.print("Before modification: " + unmodifiable);
modifiable.add("the");
modifiable.add("best");
System.out.print("After modification: " + unmodifiable);
上記のコードセグメント出力は、次のように予期しないものです。変更前の
:[Javaの、ある] 変更後:
読むthis article unmodifiableListの落とし穴とそのためのソリューションを理解するために、[Javaは、最高の、あります]。
2
リストから変更不可能なリストを作成することができます。 Collectionsクラスにはこのためのユーティリティメソッドがあります。
List<String> unModifiableList=Collections.unmodifiableList(
oldList);
実際のオブジェクトの中でリストを準備したら、それをフリーズすることができます。
0
あなたのリストをコンストラクタ引数としてゲッターメソッドでListの新しいインスタンスを返すことができます。
関連する問題
- 1. ループ不変量を定義するにはどうすればよいですか?
- 2. 可変Javaクラスで不変オブジェクトを定義する方法は?
- 3. プレーンなJSオブジェクトを不変なコレクションに変換するにはどうすればいいですか?
- 4. f#で型定義されたオブジェクトから新しい不変オブジェクトを生成する方法は?
- 5. ドメインモデルは定義上不変ですか?
- 6. は、ネストされた不変オブジェクトに
- 7. WAS 7プロファイルで定義されたホスト名を変更するにはどうすればよいですか?
- 8. 不活性スライダ項目に不透明度を適用するにはどうすればよいですか?
- 9. クラスで定義された変数をRailsフォームに渡すにはどうすればよいですか?
- 10. 不変なオブジェクトと不一致のプロパティ名を持つ@JsonPropertyアノテーションが重複しないようにするにはどうすればよいですか?
- 11. string []をArrayListに変換するにはどうすればよいですか?
- 12. Pythonで変数からクラス属性を定義するにはどうすればよいですか?
- 13. 不変クラスの代入演算子を不等間隔で定義するにはどうすればいいですか?
- 14. PHPで親テンプレートに定義された変数にアクセスするにはどうすればいいですか?
- 15. 不特定の量の変数を一緒に追加するにはどうすればいいですか?
- 16. スケール不変性と方向不変性とはどういう意味ですか?
- 17. podfileで定義された変数を読み取るにはどうすればいいですか
- 18. Highchartsでシリーズの不透明度を変更するにはどうすればよいですか?
- 19. 普通の不変ライブラリでredux-form/immutableを使用するにはどうすればよいですか?
- 20. ホバーでテキストの不透明度を変更するにはどうすればよいですか?
- 21. ClojureでJavaクラスを不変にするにはどうすればよいですか?
- 22. 継承された不変プロパティをC#で変更可能にするにはどうすればよいですか?
- 23. スクロール時にStackNavigatorヘッダーの不透明度を変更するにはどうすればよいですか?
- 24. Mercurialで不変チェンジセットを再構築するにはどうすればよいですか?
- 25. appがデプロイされたら、arrayListを変更するにはどうすればいいですか?
- 26. アンドロイドでプログレスバーの不確定性とパーセンテージを作るにはどうすればいいですか
- 27. 変数/関数定義をParallel(ParallelMapなど)で設定するにはどうすればよいですか?
- 28. タイプのいずれかが不要なジェネリックタイプを指定するにはどうすればよいですか?
- 29. SVGで変数を定義または参照するにはどうすればよいですか?
- 30. Puppetでは、定義された型の中の変数/属性にどのようにアクセスできますか?
これは正解です。彼らが望むならば、リストのコピーを返して、クライアントがそれをプレイできるようにしてください。リスト内のオブジェクトを不変にすることは、まったく別の課題です... –