• 实现序列化的java类中的serialVersionUID的作用


    1、serialVersionUID 的作用

    JAVA 序列化的机制是通过判断类的 serialVersionUID 来验证的版本一致的。序列化操作时会把系统当前类的 serialVersionUID 写入到序列化文件中,在进行反序列化时,JVM 会把传来的字节流中的 serialVersionUID 与本地相应实体类的 serialVersionUID 进行比较。如果相同说明是一致的,可以进行反序列化,否则会出现反序列化版本一致的异常,即 InvalidCastException。

    2、serialVersionUID 的生成方式

    1)一是默认的1L,比如:private static final long serialVersionUID = 1L;  
    2)二是根据包名,类名,继承关系,非私有的方法和属性,以及参数,返回值等诸多因子计算得出的,极度复杂生成的一个64位的哈希字段。基本上计算出来的这个值是唯一的。比    如:private static final long  serialVersionUID = xxxxL;当实现 java.io.Serializable 接口中没有显示的定义 serialVersionUID 变量的时候,JAVA 序列化机制会根据 Class 自动生成一个 serialVersionUID 作序列化版本比较用,这种情况下,如果 Class 文件(类名,方法明等)没有发生变化(增加空格,换行,增加注释等等),就算再编译多次,serialVersionUID 也不会变化。

    3、serialVersionUID 的兼容性

    如果我们不希望通过编译来强制划分软件版本,即实现序列化接口的实体能够兼容先前版本,就需要显示地定义一个 serialVersionUID,类型为 long 的变量。不修改这个变量值的序列化实体,都可以相互进行序列化和反序列化。

    参考:

    1)java类中serialVersionUID的作用

  • 相关阅读:
    Linux 设置core dump
    ffmpeg取rtsp流时av_read_frame阻塞的解决办法
    Qt 防多开
    Linux环境中Qt程序的手工发布
    [技术选型] SSH/SSI框架替代品
    [maven] settings 文件 国内镜像站
    [Intellij] 在IntelliJ IDEA 中创建运行web项目
    [Intellij] Intellij IDEA 使用中遇见的问题
    [spark 快速大数据分析读书笔记] 第一章 导论
    [hbase] 查询数据
  • 原文地址:https://www.cnblogs.com/GjqDream/p/11632372.html
Copyright © 2020-2023  润新知