0

次のクラスを検討してください。

class Foo
{
  private List<Integer> all;
  private Set<Integer> distinct;
  public List<Integer> getAll()
  {
    return all;
  }
  public void add(Integer i)
  {
    all.add(i);
    distinct.add(i);
  }
}

bar私は次のように変更されたくありません:

foo.getAll().add(3);

代わりに、私は自分のadd()手順を強制したいと考えています。
これを行う方法はありますか?

4

1 に答える 1

4

変更不可能getAll()なリストを返すようにすることができます。ビューを返すように考えることができるので、リストは読み取り専用モードになります。

返されたリストを変更しようとする呼び出しは、UnsupportedOperationException.

public List<Integer> getAll(){
    return Collections.unmodifiableList(all);
}
于 2014-05-03T23:07:04.807 に答える