resolve a java.util.ArrayList$SubList notSerializable Exception

Othmane picture Othmane · Oct 26, 2014 · Viewed 11.3k times · Source

I am using SubList function on an object of type List. The problem is that I am using RMI and because the java.util.ArrayList$SubList is implemented by a non-serializable class I got the Exception described above when I try to pass the resulting object to a remote function taking as an argument a List as well. I've seen that I should copy the resulting List to a new LinkedList or ArrayList and pass that.

Does anyone know a function that helps as to easily do that for this for example ?

List<String> list = originalList.subList(0, 10);

Answer

aravindaM picture aravindaM · Oct 26, 2014

It's because, List returned by subList() method is an instance of 'RandomAccessSubList' which is not serializable. Therefore you need to create a new ArrayList object from the list returned by the subList().

ArrayList<String> list = new ArrayList<String>(originalList.subList(0, 10));