Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何序列化/反序列化包含ArrayList和HashMap的对象?_Java_Serialization_Deserialization - Fatal编程技术网

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

Java 如何序列化/反序列化包含ArrayList和HashMap的对象?,java,serialization,deserialization,Java,Serialization,Deserialization,我有这门课: public class Bank implements Serializable{ ArrayList<Person> people; HashMap<Integer, Set<Account>> bank; ... } 公共类库实现可序列化{ ArrayList人; HashMap库; ... } 如何序列化/反序列化实例库的对象?我在互联网上找到了很多关于如何序列化/反序列化列表或哈希映射的示例,但我没有找到

我有这门课:

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

    ...
}
公共类库实现可序列化{
ArrayList人;
HashMap库;
...
}

如何序列化/反序列化实例库的对象?我在互联网上找到了很多关于如何序列化/反序列化列表或哈希映射的示例,但我没有找到序列化/反序列化两者或更复杂的示例。我该怎么做?欢迎任何建议。谢谢

要使类可序列化,请执行以下任一操作:

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

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


让我们看看您的银行类正在使用的类型:

  • ,及
  • 人与账户
前三个都是可序列化的(我们可以从它们的Javadoc中看到),因此没有问题

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

HashMap<Integer, HashSet<Account>> bank;

HashMap只要确保Person和Account基本上是可序列化的ArrayList和HashMap都是可序列化的,这里的问题是什么?向我们展示您迄今为止所做的尝试。@AmitK集可能是,也可能不是(所有集合集实现都是,但接口不能保证)。而且他的自定义类也可能不是。@Michael,OP没有使用set,他的自定义类只不过是AL和Map的实例,并且两者都是可序列化的。很抱歉,我错过了这一点。。