21

这个列表对象正在咬我的屁股..

每当我尝试向其中添加元素时,它都会产生以下结果:

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(","));

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

4

3 回答 3

42

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

AdventureLobbies.players = new ArrayList(Arrays.asList(rs.getString("players").toLowerCase().split(",")));
于 2012-04-08T00:18:06.077 回答
5

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

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

于 2012-04-08T00:19:36.703 回答
0

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

AdventureLobbies.players = new ArrayList(Arrays.
asList(rs.getString("players").toLowerCase().split(","))); // Perfectly done
于 2012-04-08T00:26:12.313 回答