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

您定义的列表是 main 方法中的局部变量。局部变量没有序列化。如果您需要对列表进行序列化,则需要将其定义为 ABC 类的实例变量,并通过实现 Serializable“接口”将 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 集合的一部分,通常是“可序列化的”。对于自定义类,它们还需要实现 Serializable“接口”。

于 2013-03-27T11:49:39.040 回答
0

如果您的客户端是 Java 客户端,您只需将您的类标记为implements Serializable. 否则,您必须使用 XML 或 JSON 来编组您的数据。有许多用于编组/解组的库。对于 XML,您可以使用 JAXB 或 XStream,对于 JSON,您可以使用 Jackson、XStream 和更多库。

于 2013-03-27T11:51:34.093 回答