java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList

Arrays.asList returns a List implementation, but it's not a java.util.ArrayList. It happens to have a classname of ArrayList, but that's a nested class within Arrays - a completely different type from java.util.ArrayList.

If you need a java.util.ArrayList, you can just create a copy:

ArrayList<Foo> list = new ArrayList<>(Arrays.asList(sos1.getValue()); 

or:

List<Foo> list = new ArrayList<>(Arrays.asList(sos1.getValue())); 

(if you don't need any members exposed just by ArrayList).


Arrays.asList(sos1.getValue()); produces an instance of a List implementation (java.util.Arrays$ArrayList) that is not java.util.ArrayList. Therefore you can't cast it to java.util.ArrayList.

If you change the type of sos1Value to List, you won't need this cast.

If you must have an instance of java.util.ArrayList, you can create it yourself :

sos1Value = new ArrayList (Arrays.asList(sos1.getValue()));

The ArrayList returned by Arrays.asList() method is NOT java.util.ArrayList it is a static inner class inside Arrays class. So, you can't cast it to java.util.ArrayList.

Try converting / assigning it to a List.