序列化

JavaDoc文档描述

类可以通过继承序列化接口拥有序列化的能力.所有可序列化类的子类都是可序列化的.序列化接口没有任何方法和字段,只是通过语义识别是否被序列化.

如果要让一个子类child能够序列化,但是它的父类没有实现序列化.那么父类需要一个无参数的构造函数并且这个构造函数可以被子类访问到.如果父类的构造参数不符合这个规则,那么在编译时会报错.

在反序列过程中,没有序列化的字段将会被初始化通过public,protect的无参构造函数方法初始化.可序列化子类必须可以访问父类的无参构造函数.可序列化的子类的字段将会从流中回复.

序列化类强烈建议显示声明serialVersionUID,因为不显示声明,jvm会通过类的信息来实现serialVersionUID,但是对于类的信息有较强的敏感性可能编译器的实现千差万别.serialVersionUID最好使用private 修饰,子类继承没有用处.数组不能声明一个明确的serialVersionUID,但是数组的没有匹配serialVersionUID值的要求.

代码实现

父类:

    public class lee {

        private lee(){
        
        }
    }

子类:

    public class child extends  lee implements Serializable {
    }

此时ide在子类代码上会报错,如果父类的构造参数修改为protect就可行了. 因为序列化实现了对象的深复制,子类的实例化需要父类先实例化.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 13,748评论 0 24
  • 官方文档理解 要使类的成员变量可以序列化和反序列化,必须实现Serializable接口。任何可序列化类的子类都是...
    狮_子歌歌阅读 7,128评论 1 3
  • 如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件。那你最好再阅读该篇文章,文章对序列化...
    jiangmo阅读 3,443评论 0 2
  • 1. 文章结构 序列化 ID 的问题 静态变量序列化 父类的序列化与 Transient 关键字 对敏感字段加密 ...
    Java旅行者阅读 2,880评论 0 1
  • 序列化是什么 信息的传递、交换支撑整个互联网产业,那么信息的交流的过程中遵循着什么样的标准。常见的网络传输协议有 ...
    非典型程序员阅读 6,820评论 0 5