zoukankan      html  css  js  c++  java
  • 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;
    }
    
    学习使我充实,分享给我快乐!
  • 相关阅读:
    55. Jump Game
    367. Valid Perfect Square
    22. Generate Parentheses
    254. Factor Combinations
    77. Combinations
    17. Letter Combinations of a Phone Number
    javascript获取随机数的几种方式
    javascript获取随机rgb颜色和十六进制颜色的方法
    javascript遍历数组最优写法
    javascript中字符串的常用方法
  • 原文地址:https://www.cnblogs.com/JaxYoun/p/15697387.html
Copyright © 2011-2022 走看看