我在List类型的对象上使用SubList函数。问题是我正在使用RMI,因为java.util.ArrayList $ SubList是由一个非可序列化的类实现的,当我尝试将结果对象作为参数传递给远程函数时,我得到了上面描述的异常同样。 我已经看到我应该将生成的List复制到新的LinkedList或ArrayList并传递它。
有没有人知道一个有助于为此轻松做到这一点的功能?
List<String> list = originalList.subList(0, 10);
答案 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));