我剛剛遇到一個與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