21

この 1 つのリスト オブジェクトは、私を悩ませています..

要素を追加しようとすると、次のようになります。

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

何か案は?Google で価値のあるものを見つけることができません。

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 に答える