について読みましCollections.unmodifiableList()
たが、Vector を変更不可にすると、クラスに対しても読み取り専用になります。
そのメソッドが何をするかを誤解していると思います。実際には、既存のリストに対して変更不可能なラッパーを作成し、元のリストを変更可能なままにします。
したがって、要件を処理する方法は、次のようにすることです1:
private Vector<?> myVector = new Vector<?>();
private List<?> readOnly = Collections.Collections.unmodifiableList((myVector);
public List<?> getList() { return readOnly; }
アクセスできるものはすべて、myVector
そこから要素を追加および削除できます。変更はオブジェクトを介して表示readonly
されますが、そのオブジェクトに対する「変更」操作は機能しません。
(もう 1 つのアプローチは、元のVector
オブジェクトのコピーを作成することですが、それでは要件を満たさないと確信しています。)
1 -readOnly
オブジェクトは ではあるList
が ではないことに注意してくださいVector
。ゲッターをVector
. それを行っても間違いを修正できない場合は、Vector
Evgeniy Dorofeev の回答に沿って独自のサブクラスを作成する必要があります。そうでなければCollections.unmodifiableList(...)
うまくいきます。