2009-09-07 11 views
53

私はリストを深くクローンしたいと思います。そのために、私たちは、私は、シリアライズ最初にそれを変換する必要があり、私のリストのクローンを作成することになりましたので、方法Javaでリストをシリアライズするには?

// apache commons method. This object should be serializable 
SerializationUtils.clone (object) 

を持っています。 ListをSerializableリストに変換することは可能ですか?

答えて

126

java.util.Listのすべての標準実装ではすでにjava.io.Serializableが実装されています。

java.util.List自体がjava.io.Serializableのサブタイプでないにもかかわらずだから、限り、あなたはそれがArrayListまたはLinkedListのような標準的な実装の1つであることを知っているとして、Serializableにリストをキャストしても安全でなければなりません。

わからない場合は、最初にリストをコピーしてください(new ArrayList(myList)のようなものを使用して)、それがシリアライズ可能であることがわかります。

+0

なぜ誰かがSerializableに何かをキャストしたいのですか?シリアライズ可能なのはマーカーインターフェイスだけです。 Serializableに何かをキャストすることは有用ではありません。 – Jesper

+17

'SerializationUtils.clone()'は 'Serializable'型の引数を必要とするので、変数が' List'型の場合は、それをキャストする必要があります。 – skaffman

+2

@Jesper:これは、クラスをシリアル化するのが安全だと言うマーカーインターフェイスです。 Androidは多くのことでSerializableインターフェイスを使用します。インテントエクストラ、共有設定などを渡します。 –

7

リストは単なるインターフェイスです。問題は:あなたの実際のリストの実装はシリアライズ可能ですか? Javaランタイムから標準リストの実装について(ArrayList,LinkedList)、実際にはすでに実際には存在しています。

24

すでに指摘したように、Listのほとんどの標準実装はシリアル化可能です。ただし、リスト内で参照/包含されているオブジェクトがでもシリアライズ可能であることを確認する必要があります。

+1

Downvotedなぜですか? –

+1

既に指摘したように、 'List'は' Serializable'やそれを行うインターフェースを拡張しないインターフェースです。シリアライズ可能ではない 'List'は、標準ライブラリでは一般的ではないかもしれませんが、最初の文章を正しく作成することはできません。 –

関連する問題