EN
Java - Arrays.asList() add new element throws java.lang.UnsupportedOperationException FIX
14
points
1. FIXED - by using ArrayList constructor
Instead of using:
List<String> list = Arrays.asList(arr);
Use:
List<String> list = new ArrayList<>(Arrays.asList(arr));
Example:
String[] arr = {"Tim", "Jerry", "Ann"};
// FIXED:
List<String> list = new ArrayList<>(Arrays.asList(arr));
list.add("TEST");
// [Tim, Jerry, Ann]
System.out.println(list.toString());
2. Reproduction and explanation:
String[] arr = {"Tim", "Jerry", "Ann"};
List<String> list = Arrays.asList(arr);
// below method throws java.lang.UnsupportedOperationException
list.add("TEST");
Stack trace:
java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
Java docs of Arrays.asList:
Returns a fixed-size list backed by the specified array.
As we can see from stack trace when we call list.add
method we call it on custom implementation of ArrayList.
This implementation is a part of java core class: java.util.Arrays
This custom implementation doesn't implement add
method, that's why we get this exception.
Java docs of List.add:
Throws:
UnsupportedOperationException - if the add operation is not supported by this list