我是序列化世界的新手,我有一个可能重复的查询,但请帮助我。我有一个名为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);
}
}
我应该选择可序列化或外部化的接口吗?
答案 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和更多库。