• Java之serialVersionUID


    序列化ID的作用:

    ​ 其实,序列化版本号起着关键作用,它决定了能否成功反序列化!简单地说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传入的字节流中的serialVersionUID与本地实体类中的serialVersionUID进行比较,如果相同则认为是一致的,便可以进行反序列化,否则就会抛出序列化版本不一致异常。

    序列化ID如何产生:

    ​ 当一个实体类中没有显式的定义一个名为“serialVersionUID”、类型为long的变量时,Java序列化机制会根据编译时的class自动生成一个serialVersionUID作为序列化版本号。这种情况下,只有同一次编译生成的class才会生成相同的serialVersionUID。

    ​ 譬如,我们编写完一个类后,编译打包发给依赖方使用。由于需求变化等原因,我们在本地类中新增了几个字段,此时将新版的类对象,传输给依赖方,依赖方反序列化时便会出现serialVersionUID不一致,导致反序列化失败。

    ​ 那么如何解决呢?便是在本地类中添加一个“serialVersionUID”变量,并保持其不变,便可以进行序列化和反序列化。

    使用:

    public class Person implements Serializable  {
        private static final long serialVersionUID = -5809782578272943999L;
    }
    
    学习使我充实,分享给我快乐!
  • 相关阅读:
    tomcat配置通过域名直接访问项目首页步骤
    kafka配置参数
    nginx平滑升级
    redsi一主两从三哨兵
    kill
    lelnet爱一直在
    在linux中查看进程占用的端口号
    监控redis
    老猿学5G随笔:RAN、RAT以及anchor移动性锚点的概念
    老猿学5G随笔:5G网元功能体NF以及NF之间的两种接口--服务化接口和参考点
  • 原文地址:https://www.cnblogs.com/JaxYoun/p/15697387.html
Copyright © 2020-2023  润新知