0

私はシリアライゼーションの世界の初心者です。繰り返しの可能性があるクエリがありますが、助けてください。リストで構成される ABC という名前のクラスがあります。リストをシリアライズして、そのリストを通信網。以下は私のクラスです..

Public class Abc {  
    public static void main(String[] args) {

        List list = new ArrayList();
        list.add(1);
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(3);
        list.add(3);
}
}

シリアライズ可能または外部化可能なインターフェイスを使用する必要がありますか?

4

2 に答える 2

2

定義したリストは、メイン メソッドのローカル変数です。ローカル変数はシリアル化されません。リストをシリアライズする必要がある場合は、それをクラス ABC のインスタンス変数として定義し、シリアライズ可能な「インターフェース」を実装してクラス ABC をシリアライズ可能として定義する必要があります。

public class Abc implements Serializable {
    private List<Integer> list = new ArrayList<Integer>();
    public Abc() {
        list.add(1);
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(3);
        list.add(3);
    }
}

このようにして、クラス Abc をシリアライズし、ネットワーク経由で送信してから、正しくデシリアライズすることができます。List/ArrayList は Java のコレクションの一部であり、通常は「シリアライズ可能」であることに注意してください。カスタム クラスの場合は、シリアライズ可能な「インターフェイス」も実装する必要があります。

于 2013-03-27T11:49:39.040 に答える
0

クライアントが Java クライアントの場合は、クラスを としてマークするだけですimplements Serializable。それ以外の場合は、XML または JSON を使用してデータをマーシャリングする必要があります。マーシャリング/アンマーシャリング用のライブラリは多数あります。XML の場合は JAXB または XStream を使用でき、JSON の場合は Jackson、XStream などの多くのライブラリを使用できます。

于 2013-03-27T11:51:34.093 に答える