【发布时间】:2015-12-23 17:58:55
【问题描述】:
HashMap 和 Serializable 键/值应该是 Serializable。
但这对我不起作用。尝试了其他一些 IO 流。没有工作。
有什么建议吗?
测试代码
public class SimpleSerializationTest {
@Test
public void testHashMap() throws Exception {
HashMap<String, String> hmap = new HashMap<String, String>() {{
put(new String("key"), new String("value"));
}};
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
out = new ObjectOutputStream(bos);
out.writeObject(hmap);
byte[] yourBytes = bos.toByteArray();
if (out != null) {
out.close();
}
bos.close();
ByteArrayInputStream bis = new ByteArrayInputStream(yourBytes);
ObjectInput in = null;
in = new ObjectInputStream(bis);
Object o = in.readObject();
bis.close();
if (in != null) {
in.close();
}
assertEquals(hmap, o);
}
}
堆栈跟踪
java.io.NotSerializableException: SimpleSerializationTest
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at SimpleSerializationTest.testHashMap(SimpleSerializationTest.java:18)
Process finished with exit code 0
【问题讨论】:
-
在我的本地试过。它运行没有任何异常。看来你没有导入正确的类文件?你能分享一下吗?我觉得休息很好。
-
不要写
new String("key"),只写"key"。"key"之类的文字已经是String对象。您无需显式创建该String对象的副本。
标签: java hashmap serializable