我有这种方法,它使用字符串的可变参数,从中创建一个列表,然后尝试删除列表的第一个元素。
public void importFrom(String... files) { List<String> fileList = Arrays.asList(files); String first = fileList.remove(0); // other stuff }
但是,一旦remove被调用,UnsupportedOperationException就会抛出一个。我的猜测是返回的List- Type不支持remove方法。我对么?我有什么选择?
remove
UnsupportedOperationException
Arrays.asList仅在数组周围提供薄包装。该包装器使您可以使用API 对阵列执行 大多数 操作List。JavaDoc的引文:
Arrays.asList
List
返回由指定数组支持的 固定大小的 列表。[…]此方法充当基于数组的API和基于集合的API之间的桥梁[…]
如果您确实要删除某些内容,则可以这样做:
List<String> realList = new ArrayList<String>(Arrays.asList(stringArray));
这个创建一个真实的ArrayList(支持remove)并用另一个列表的内容填充它,恰好是您的包装器String[]。
ArrayList
String[]