序列化类中的列表

时间:2013-03-27 11:39:15

标签: java serialization

我是序列化世界的新手,我有一个可能重复的查询,但请帮助我。我有一个名为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);
}
}

我应该选择可序列化或外部化的接口吗?

2 个答案:

答案 0 :(得分:2)

您定义的列表是main方法中的局部变量。局部变量未序列化。如果需要序列化列表,则需要将其定义为ABC类的实例变量,并通过实现Serializable“interface”将类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”。对于自定义类,他们还需要实现Serializable“interface”。

答案 1 :(得分:0)

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