我无法在列表中添加元素? UnsupportedOperationException异常

时间:2012-04-08 00:06:27

标签: java list object add abstract

这个列表对象正在咬我...

每当我尝试向其添加元素时,它都会生成:

Caused by: java.lang.UnsupportedOperationException
        at java.util.AbstractList.add(AbstractList.java:148)
        at java.util.AbstractList.add(AbstractList.java:108)

产生错误的行无关紧要,但无论如何:

AdventureLobbies.players.add(args[0].toLowerCase());

我是否应该静态访问它?

变量的实际声明:

AdventureLobbies.players = Arrays.asList(rs.getString("players").toLowerCase().split(","));

有什么想法吗?在谷歌上找不到任何值得的东西。

3 个答案:

答案 0 :(得分:37)

Arrays.asList()会返回一个不可修改的列表,这就是你的添加失败的原因。尝试使用以下命令创建列表:

AdventureLobbies.players = new ArrayList(Arrays.asList(rs.getString("players").toLowerCase().split(",")));

答案 1 :(得分:5)

java文档说     asList     @SafeVarargs     public static <T> List<T> asList(T... a) “返回由指定数组支持的固定大小的列表”

您的列表是固定大小的,这意味着它无法增长或缩小,因此当您调用add时,它会抛出不受支持的操作异常

答案 2 :(得分:0)

这个异常非常熟悉访问不允许根据java语言规则访问的对象,比如访问不可变对象,因此可以通过以下方式实例化它:

AdventureLobbies.players = new ArrayList(Arrays.
asList(rs.getString("players").toLowerCase().split(","))); // Perfectly done