web-dev-qa-db-ja.com

Java.util.ArrayList $ SubListnotSerializable例外を解決します

List型のオブジェクトでSubList関数を使用しています。問題は、RMIを使用していて、Java.util.ArrayList $ SubListがシリアル化できないクラスによって実装されているため、結果のオブジェクトを引数としてリストを使用してリモート関数に渡そうとすると、上記の例外が発生することです。同じように。結果のリストを新しいLinkedListまたはArrayListにコピーして、それを渡す必要があることを確認しました。

たとえば、これを簡単に行うのに役立つ関数を知っている人はいますか?

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

これは、subList()メソッドによって返されるListが、シリアル化できない「RandomAccessSubList」のインスタンスであるためです。したがって、subList()によって返されるリストから新しいArrayListオブジェクトを作成する必要があります。

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

解決策は単にこのコードでした:

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