List.addAll在尝试添加其他列表时抛出UnsupportedOperationException
。
List<String> supportedTypes = Arrays.asList("6500", "7600"};
在循环中我正在做,
supportedTypes.addAll(Arrays.asList(supportTypes.split(","))); //line 2
从文件中读取 supportTypes 。
但第2行引发UnsupportedOperationException
,但我无法确定原因?
我在列表中添加了另一个列表,那么为什么不支持此操作?
答案 0 :(得分:78)
Arrays.asList
返回由数组支持的固定大小的列表,您无法向其添加元素。
您可以创建可修改的列表以使addAll
正常工作:
List<String> supportedTypes = new ArrayList<String>(Arrays.asList("6500", "7600", "8700"));
答案 1 :(得分:9)
Arrays.asList返回固定大小的列表。
如果您希望能够将元素添加到列表中,请执行以下操作:
List<String> supportedTypes = new ArrayList<>(Arrays.asList("6500", "7600"});
supportedTypes.addAll(Arrays.asList(supportTypes.split(",")));
答案 2 :(得分:6)
使用Collections.emptyList()
初始化列表时也会发生此错误,该列表是不可变的:
List<String> myList = Collections.emptyList();
相反,使用可变列表初始化它。例如
List<String> myList = new ArrayList<>();
答案 3 :(得分:5)
问题是Arrays.asList
方法返回java.util.Arrays.ArrayList的实例,该实例不支持对元素的添加/删除操作。令addAll
方法抛出异常并不令人惊讶,因为java.util.Arrays.ArrayList
的add方法定义为:
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
相关问题:
Arrays.asList() Confusing source code
Arrays.asList 返回由指定数组支持的固定大小列表。
答案 4 :(得分:0)
在我的情况下,当我致电adapter.addAll(items)
时发生了此异常,其中adapter
是自定义ArrayAdapter
。此CustomAdapter的参数类型为Array
,而不是ArrayList
。