2017-07-19 7 views

答えて

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の新しいインスタンスを返すことができます。

+0

これは正解です。彼らが望むならば、リストのコピーを返して、クライアントがそれをプレイできるようにしてください。リスト内のオブジェクトを不変にすることは、まったく別の課題です... –

関連する問題