Gray Adams
Gray Adams

Reputation: 4117

I am unable to add an element to a list? UnsupportedOperationException

This one list object is biting me in the butt..

Any time I try to add an element to it, it produces this:

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

The line producing the error is insignificant, but here it is anyways:

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

Should I not be accessing it statically?

Actual declaration of variable:

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

Any ideas? Can't find anything on Google that's worthwhile.

Upvotes: 23

Views: 19235

Answers (3)

GingerHead
GingerHead

Reputation: 8230

This exception is very familiar with accessing objects that will not permit the access according to java language rules like accessing immutable objects, for that reason instantiate it in the following way instead:

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

Upvotes: 0

user12345613
user12345613

Reputation: 833

The java docs say asList @SafeVarargs public static <T> List<T> asList(T... a) "Returns a fixed-size list backed by the specified array"

Your list is fixed size, meaning it cannot grow or shrink and so when you call add, it throws an unsupported operation exception

Upvotes: 5

John Farrelly
John Farrelly

Reputation: 7459

Arrays.asList() will give you back an unmodifiable list, and that is why your add is failing. Try creating the list with:

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

Upvotes: 43

Related Questions