public static void wildCard2(List<? super Base> lst){
for (int i=0; i<2; i++){
System.out.println(lst.get(i));
}
lst.add(new Base());
}
如上面的代码所示,我有一个名为Base的类。
任何人都可以解释为什么在RunTime失败并抛出UnsupportedOperationException
?
答案 0 :(得分:1)
List<E>
接口上定义的add(E e)
方法被指定为可选操作。
如果您在运行时获得UnsupportedOperationException
,则表示您正在使用的List
实施而非支持此操作。
它可能是一种不可修改的类型,通过调用Collections.unmodifiableList()
,一个Guava ImmutableList
的实例或其他完全来创建。检查运行时类型以查找:
System.out.println(lst.getClass().getName());
答案 1 :(得分:0)
您不能.add()
来自此类List
,您可以将列表副本创建为ArrayList
等已知可修改的实现。