以下からのJava 1.6コレクションフレームワークのドキュメント:
任意の変更操作を(のようなサポートしていないコレクションは
add
、remove
とclear
)と呼ばれている変更不可能。[...]さらに、Collectionオブジェクトの変更が表示されないことを保証するコレクションは、不変と呼ばれます。
2番目の基準は少し混乱します。最初のコレクションは変更できず、元のコレクション参照が破棄されていると仮定すると、2行目で参照されている変更は何ですか?それはコレクションに保持されている要素の変化、つまり要素の状態を参照していますか?
2番目の質問:
コレクションを不変にするには、指定された追加の保証人をどのように提供しますか?コレクション内の要素の状態がスレッドによって更新される場合、状態のそれらの更新が不変のコレクションを保持するスレッドに表示されないことは不変性にとって十分ですか?
コレクションを不変にするには、指定された追加の保証を提供するにはどうすればよいですか?
newCol = oldCol.add("element")
は1つ以上の要素を持つ古いもののコピーである新しいコレクションを生成し、へのすべての参照oldCol
は同じ変更されていない古いコレクションを引き続き指します。