解析 java.util.ArrayList$SubList notSerializable Exception

2022-09-01 13:50:12

我正在对List类型的对象使用SubList函数。问题是我使用的是RMI,因为java.util.ArrayList$SubList是由一个不可序列化的类实现的,当我尝试将结果对象传递给远程函数时,我得到了上面描述的异常,也以List作为参数。我已经看到我应该将生成的列表复制到新的LinkedList或ArrayList并传递它。

例如,有没有人知道一个有助于轻松做到这一点的函数?

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

答案 1

这是因为,subList() 方法返回的 List 是 'RandomAccessSubList' 的一个实例,它是不可序列化的。因此,您需要从 subList() 返回的列表中创建一个新的 ArrayList 对象。

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

答案 2

解决方案只是这个代码:

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