HashMap
với Serializable
khóa/giá trị được cho là Serializable
.HashMap không thể nối tiếp
Nhưng nó không hoạt động đối với tôi. Đã thử một số luồng IO khác. Không có tác phẩm nào.
Bất kỳ đề xuất nào?
mã kiểm tra
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);
}
}
Stack trace
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
Thử nó trên local.it tôi chạy mà không có bất kỳ exception.It vẻ như bạn không được nhập khẩu tập tin lớp học thích hợp? Bạn có thể chia sẻ điều đó không? –
Không viết 'chuỗi mới (" khóa ")', chỉ cần viết '" khóa "'. Một chữ như '" key "' đã là một đối tượng 'String'. Bạn không cần phải tạo một bản sao của đối tượng 'String' đó một cách rõ ràng. – Jesper