美文网首页
serialVersionUID

serialVersionUID

作者: packet | 来源:发表于2019-01-03 23:38 被阅读0次

    《阿里巴巴Java开发手册》中有以下规定:


    java.io.Serializable是标记接口(里面是空的),未实现此接口的类将无法进行序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。
    transient 关键字的作用是控制变量的序列化,在变量声明前加上该关键字,可以阻止该变量被序列化到文件中,在被反序列化后,transient 变量的值被设为初始值,如 int 型的是 0,对象型的是 null。

    虚拟机是否允许反序列化,不仅取决于类路径和功能代码是否一致,一个非常重要的一点是两个类的序列化 ID 是否一致,这个所谓的序列化ID,就是我们在代码中定义的serialVersionUID。
    场景1:A类有serialVersionUID,序列化之后,改动serialVersionUID,反序列化出错。
    场景2:A类有serialVersionUID,序列化之后,增加或改动字段,反序列化成功。
    场景3:A类无serialVersionUID,序列化之后,增加或改动字段,反序列化失败。
    场景4:A类无serialVersionUID,序列化之后,反序列化成功。

    鸣谢:serialVersionUID

    相关文章

      网友评论

          本文标题:serialVersionUID

          本文链接:https://www.haomeiwen.com/subject/xklcrqtx.html