我刚刚遇到一个与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");
...然后系列化做工精细。
有人可以告诉我为什么会发生,这些陈述之间有什么区别?我认为他们应该同样工作,但显然我错过了一些东西。
通过'静态初始化程序',你的意思是'实例初始化程序? – 2012-07-31 09:21:40
那么预期的封闭类会是什么? – Shark 2012-07-31 09:22:25
@ Eng.Fouad - 哎呀。修正 – 2012-07-31 09:24:00