如何序列化/反序列化包含ArrayList和HashMap的对象?

时间:2017-05-03 09:56:53

标签: java serialization deserialization

我有这堂课:

public class Bank  implements Serializable{
    ArrayList<Person> people;
    HashMap<Integer, Set<Account>> bank;

    ...
}

如何序列化/反序列化实例Bank的对象?我在互联网上找到了很多关于如何序列化/反序列化列表或hashMap的例子,但是我没有找到序列化/反序列化这两个或更复杂的例子。我该怎么做?欢迎任何建议。谢谢!

1 个答案:

答案 0 :(得分:0)

为了使类可序列化,可以:

1)它封装的每种类型也必须是可序列化的

2)该字段必须为marked as transient(这意味着它们未被序列化)

让我们看看你的班级正在使用的类型:

前三个都是可序列化的(我们可以从他们的JavaDocs中看到)所以那里没有问题。

根据定义, 序列化不是,但java.util中的所有实现都是可能安全。但是,如果您依赖于可序列化的集合,您应该更改您的定义,使其更明确:

HashMap<Integer, HashSet<Account>> bank;

人和帐户是我认为你自己写的课程。您尚未提供它们,但请确保它们也实现了可序列化。如果它们也不是可序列化的,我相信如果你尝试序列化它,你的ArrayList会抛出异常。

此外,请确保您的可序列化类包含serialVersionUIDWhat is a serialVersionUID and why should I use it?