zoukankan      html  css  js  c++  java
  • 为什么对象序列化要定义serialVersionUID

    对于实现了java.io.Serializable接口的实体类来说,往往都会手动声明serialVersionUID,因为只要你实现了序列化,java自己就会默认给实体类加上一个serialVersionUID。

    java默认添加的serialVersionUID是会根据实体类的成员(成员变量,成员方法)变化而变化的。

    为什么要显示声明一个serialVersionUID呢?

    当我们把实体类序列化到本地后,如果实体类的成员发生了变化,默认添加的serialVersionUID就会发生变化。此时硬盘上序列化对象的serialVersionUID与实体类中的serialVersionUID对不上,就会反序列化失败爆出异常:

    Exception in thread “main” java.io.InvalidClassException: Person; local class incompatible: stream classdesc serialVersionUID = 8383901821872620925, local class serialVersionUID = -763618247875550322 

    所以,通常对于实现了SerialVersionUID接口的实体类来说,都会手动声明serialVersionUID。

    private static final long serialVersionUID = 1L;

    通过上述代码即可实现。

    
    
  • 相关阅读:
    音乐小转盘 css3 动画
    1.41
    1.4
    1.1
    课程设计——输出到TXT
    课程设计——c++中读取txt文件
    大二第一学期期末课程设计 2015.12.28
    无向图的广度优先遍历
    JS基本概念
    继承
  • 原文地址:https://www.cnblogs.com/lilinzhiyu/p/7928587.html
Copyright © 2011-2022 走看看