This question already has answers here:
remove() on List created by Arrays.asList() throws UnsupportedOperationException
(3个答案)
2年前关闭。
使用方法返回的列表引用添加元素时出现错误。
Dummy.java
主要
错误
我知道我可以通过添加来摆脱此错误
新的ArrayList(obj.getNames())
我的问题是为什么我不能使用该裁判作为原始裁判?
支持添加新元素。
(3个答案)
2年前关闭。
使用方法返回的列表引用添加元素时出现错误。
Dummy.java
package firstPro;
import java.util.List;
public class Dummy {
private List<String> names;
public Dummy(List<String> names) {
this.names = names;
}
public List<String> getNames() {
return this.names;
}
}
主要
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class count {
public static void main(String[] args) {
Dummy obj = new Dummy(Arrays.asList("foo1", "foo2", "foo3", "foo4", "foo5"));
List<String> name = obj.getNames();
name.add("foo6");
System.out.println(name);
}
}
错误
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at firstPro.count.main(count.java:13)
我知道我可以通过添加来摆脱此错误
新的ArrayList(obj.getNames())
我的问题是为什么我不能使用该裁判作为原始裁判?
最佳答案
Arrays.asList("foo1", "foo2", "foo3", "foo4", "foo5")
创建一个固定大小的列表,因此您不能在其中添加/删除元素(只能修改现有元素或替换现有索引中的元素)。
您可以使用:
new ArrayList<>(Arrays.asList("foo1", "foo2", "foo3", "foo4", "foo5"))
支持添加新元素。