【问题标题】:What makes an Object serializable是什么让对象可序列化
【发布时间】:2017-08-25 14:34:15
【问题描述】:

我有一个带有HashMap 字段的对象和一些我正在尝试序列化的方法。但是,在运行时,我得到了一个java.io.NotSerializableException

我正在检查HashMaps 是否可以被序列化,从我读到的内容来看,它们是这样的,所以我不确定问题出在哪里。

我只是想知道是什么让一个对象能够被序列化,为什么这个似乎只有可以序列化的字段的对象也不能序列化。

【问题讨论】:

标签: java file serialization


【解决方案1】:

这是在 Java 平台规范中定义的:

https://docs.oracle.com/javase/7/docs/platform/serialization/spec/serial-arch.html

基本规则如下:

"一个可序列化的类必须做到以下几点:

  • 实现java.io.Serializable接口

  • 标识应可序列化的字段(使用 serialPersistentFields 成员显式声明它们可序列化 或者使用transient关键字来表示不可序列化

  • 可以访问其第一个不可序列化的无参数构造函数 超类”

一般而言,在没有任何相反迹象的情况下,未明确标记为“瞬态”的字段是序列化的候选对象。

从目标对象向下的整个对象图必须是可序列化的,否则什么都不是。也就是说,每个引用对象(不是原语)的字段都必须引用一个可序列化的对象。

【讨论】:

    猜你喜欢
    • 2010-11-21
    • 2010-10-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 2011-05-03
    相关资源
    最近更新 更多