java HashMap中写入writeObject时写入的什么
HashMap中有很多变量都是transient的,不会被序列化。我想知道序列化时写入的是哪个字段?
我发现有一个table变量是transient的,结果在反序列化的时候,它竟然有值,请解释一下。
测试代码:
HashMap<String, Object> map = new HashMap<String, Object>(); map.put("1", new Date()); ByteArrayOutputStream bo = new ByteArrayOutputStream(); ObjectOutputStream oo = new ObjectOutputStream(bo); oo.writeObject(map); ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray()); ObjectInputStream oi = new ObjectInputStream(bi); Object obj = oi.readObject(); //这个地方设置断点,发现obj的table不为空。。 System.out.println(obj);