リストのクローンを作成したいと思います。そのために私たちは方法を持っています
// apache commons method. This object should be serializable
SerializationUtils.clone ( object )
したがって、リストのクローンを作成するには、最初にそれをシリアル化可能に変換する必要があります。リストをシリアル化可能なリストに変換することは可能ですか?
リストのクローンを作成したいと思います。そのために私たちは方法を持っています
// apache commons method. This object should be serializable
SerializationUtils.clone ( object )
したがって、リストのクローンを作成するには、最初にそれをシリアル化可能に変換する必要があります。リストをシリアル化可能なリストに変換することは可能ですか?
回答:
のすべての標準実装はjava.util.List
すでに実装されていますjava.io.Serializable
。
したがって、java.util.List
それ自体はのサブタイプではありませんが、またはのような標準実装の1つであることがわかっている限りjava.io.Serializable
、リストをにキャストしても安全Serializable
です。ArrayList
LinkedList
よくわからない場合は、最初にリストをコピーして(のようなものを使用してnew ArrayList(myList)
)、シリアル化可能であることがわかります。
SerializationUtils.clone()
型Serializable
に引数が必要であるため、変数が型のList
場合は、それをキャストする必要があります。
List<MyClass> myObjs = new ArrayList<MyClass>();
満たしていませんSerializable
が、ArrayList<MyClass> myObjs = new ArrayList<MyClass>();
ありません。
<T extends List<Foo> & Serializable> setFooList(T list)
、呼び出し元は、シリアル化可能なリスト実装のインスタンスを渡す必要があります。
すでに指摘したように、のほとんどの標準実装List
はシリアライズ可能です。ただし、リスト内で参照/含まれているオブジェクトもシリアル化可能であることを確認する必要があります。
List
拡張しないSerializable
インターフェイス、または拡張するインターフェイスです。List
シリアル化できないsは、標準ライブラリでは一般的ではないかもしれませんが、それでは最初の文が正しくなりません。