【发布时间】:2012-07-29 00:30:53
【问题描述】:
我刚刚遇到了一个与 Java 序列化相关的有趣问题。
看来如果我的地图是这样定义的:
Map<String, String> params = new HashMap<String, String>() {{
put("param1", "value1");
put("param2", "value2");
}};
我尝试使用 ObjectOutputStream 将其序列化为文件:
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(outputFile));
oos.writeObject(params);
...我得到 java.io.NotSerializableException。
但是,如果我以标准方式将值放入地图:
Map<String, String> params = new HashMap<String, String>();
params.put("param1", "value1");
params.put("param2", "value2");
...然后序列化工作正常。
谁能告诉我为什么会发生这种情况以及这些陈述之间有什么区别?我认为它们应该工作相同,但显然我错过了一些东西。
【问题讨论】:
标签: java serialization hashmap