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 回答