解析java.util.ArrayList $ SubList notSerializable异常

时间:2014-10-25 23:11:07

标签: java serialization arraylist rmi

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

有没有人知道一个有助于为此轻松做到这一点的功能?

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

2 个答案:

答案 0 :(得分:35)

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

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

答案 1 :(得分:7)

解决方案就是这段代码:

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