美文网首页
serialVersionUID

serialVersionUID

作者: xiari1991 | 来源:发表于2021-02-05 21:29 被阅读0次

serialVersionUID适用于java序列化机制。简单来说,JAVA序列化的机制是通过 判断类的serialVersionUID来验证的版本一致的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID于本地相应实体类的serialVersionUID进行比较。如果相同说明是一致的,可以进行反序列化,否则会出现反序列化版本一致的异常,即是InvalidCastException。

具体序列化的过程是这样的:序列化操作时会把系统当前类的serialVersionUID写入到序列化文件中,当反序列化时系统会自动检测文件中的serialVersionUID,判断它是否与当前类中的serialVersionUID一致。如果一致说明序列化文件的版本与当前类的版本是一样的,可以反序列化成功,否则就失败;

serialVersionUID有两种显示的生成方式:
一是默认的1L,比如:private static final long serialVersionUID = 1L;

二是根据包名,类名,继承关系,非私有的方法和属性,以及参数,返回值等诸多因子计算得出的,极度复杂生成的一个64位的哈希字段。基本上计算出来的这个值是唯一的。比如:private static final long serialVersionUID = xxxxL;
注意:显示声明serialVersionUID可以避免对象不一致

当一个类实现类Serializable接口,如果没有显示定义serialVersionUID 如果需要idea自动给出警告,可以在prefrences-Editor-Inspections-Java-Serialization issues-Serialization class without 'serialVersionUID' 打上对勾,idea会自动给出相应的警告
option+换行快捷键,弹出下图,点击Add 'serialVersionUID' field就会自动生成serialVersionUID了。


image.png

相关文章

  • IntelliJ IDEA生成 Serializable 序列化

    为什么要使用 serialVersionUID serialVersionUID 适用于 Java的序列化机制。 ...

  • serialVersionUID

    什么是serialVersionUID serialVersionUID表示:“串行化版本统一标识符”(seria...

  • private static final long serial

    Java中serialVersionUID的解释 serialVersionUID作用:相当于java类的身份证。...

  • 为什么阿里Java规约要求谨慎修改serialVersionUI

    serialVersionUID简要介绍 serialVersionUID是在Java序列化、反序列化对象时起作用...

  • serialVersionUID

    serialVersionUID又是一个非常重要的字段,因为 Java 的序列化机制是通过在运行时判断类的seri...

  • serialVersionUID

    《阿里巴巴Java开发手册》中有以下规定: 虚拟机是否允许反序列化,不仅取决于类路径和功能代码是否一致,一个非常重...

  • serialVersionUID

    serialVersionUID适用于java序列化机制。简单来说,JAVA序列化的机制是通过 判断类的seria...

  • serialVersionUID作用

    Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化...

  • serialVersionUID作用

    描述 实现Serializable接口时,会提示声明serialVersionUID。本文说明serialVers...

  • serialVersionUID介绍

    serialVersionUID的作用 简单来说,Java的序列化机制是通过在运行时判断类的serialVersi...

网友评论

      本文标题:serialVersionUID

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