Search code examples
javaserializationarraylistrmi

resolve a java.util.ArrayList$SubList notSerializable Exception


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);

Solution

  • 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().

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