2009-06-16 4 views
4

すべてのドメインレベルロジックをインターフェイスに適用してプログラミングしました。コレクションインタフェース(Collection、List、Setなど)がSerializableを実装していないため、Beanにデータを入れたい場合、Beanは機能しません。JavaコレクションをインターフェースにプログラミングしてSerializableを使用できますか?

具体的なタイプを使用するためにすべてのコードをリファクタリングする必要がありますか?

答えて

5

クラスがSerializableを実装し、そのメンバーのすべてがシリアライズ可能な場合、オブジェクトは正しくシリアル化できます。例:限りluckyNumbersのインスタンスが(例えばArrayListなど)シリアライズ可能であり、そのメンバーは、オブジェクトをシリアル化し、(この場合Integer S)シリアライズされているよう

public class Person implements Serializable { 
    private String name; 
    private Collection<Integer> luckyNumbers = new ArrayList<Integer>(); 
} 

+0

私のインスタンスはシリアライズ可能ですが、私は信じています。これはJava 5のみに当てはまりますか? –

+0

あなたはリファレンスを持っていますか?あなたはこれをテストしましたか?もしそうなら、私は私の答えを削除します。 –

+0

いいえ、これはjava 1.4にも適用されます。あなたのコレクションがArrayListのようなSerializableの場合、クラスは適切にシリアル化されます。 – Jorn

0

Serializableは「マーカー」インターフェースである。参照の型に使用するのは適切ではありません。ダイナミックなタイピングをしています(ただし、外部の静的型チェッカーを使用することはありません)。

奇妙なパラメータ化されたジェネリックメソッドでフープをジャンプすることはできますが、極端に醜いでしょうし、Javaライブラリはそれを行わないので、

関連する問題