について読みまし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. それを行っても間違いを修正できない場合は、VectorEvgeniy Dorofeev の回答に沿って独自のサブクラスを作成する必要があります。そうでなければCollections.unmodifiableList(...)うまくいきます。