我有一个带有HashMap
字段的对象以及我尝试序列化的一些方法。但是,在运行时,我得到java.io.NotSerializableException
。
我正在检查HashMaps
是否可以被序列化,而且我已经阅读了它们,所以我不确定问题是什么。
我只是想知道是什么让一个对象能够被序列化,为什么这个对象似乎只有可以序列化的字段也不能。
答案 0 :(得分:1)
这是在Java平台规范中定义的:
https://docs.oracle.com/javase/7/docs/platform/serialization/spec/serial-arch.html
基本规则如下:
" Serializable类必须执行以下操作:
实现java.io.Serializable接口
标识应该可序列化的字段(使用 serialPersistentFields成员显式声明它们可序列化 或使用transient关键字表示不可序列化的
可以访问其第一个非可序列化的no-arg构造函数 超"
从广义上讲,在没有任何相反的迹象的情况下,以及未明确标记的字段"瞬态"是序列化的候选者。
目标对象向下的整个对象图必须是可序列化的,或者什么都不是。也就是说,引用对象(不是基元)的每个字段都必须引用可序列化对象。