java UnmodifiableCollection

Screen Shot 2021-06-12 at 11.05.49 PM.png

UnmodifiableCollection 继承 Collection,只不过 add remove 等方法都抛出异常。

为什么要抛出异常而不是去掉 add remove 等方法??? 当然是可以定义一个只读的 Collection 接口的,去掉 add remove 等方法, 但那样你就只能用只读的类型去引用对象了,而不能用 List 等 Collection 类型去引用。 现在抛出异常,你仍然用 List 等类型去引用。
我能用 UnmodifiableCollection 去引用 List 对象吗?? 不可以,一是 UnmodifiableCollection 不是 public 的,外部访问不到。 二是 UnmodifiableCollection 是 Collection 的子类, 你不能用子类去引用基类。

List list = new ArrayList<>();
list.add("aaa");
list.add("bbb");

List unmodifiableList = Collections.unmodifiableList(list);
unmodifiableList.add("ccc"); // 会抛出异常       

你可能感兴趣的:(java UnmodifiableCollection)