序列化serialVersionUID

1、为什么要使用serialVersionUID
(1)对于实现了Serializable接口的类,可以将其序列化输出至磁盘文件中,同时会将其serialVersionUID输出到文件中。
(2)然后有需要使用时,再从磁盘将对象内容及serialVersionUID读入内容中的某个对象。
(3)将磁盘内容读入对象时,需要进行强制类型转换,如Person person = (Person)ois.readObject();
(4) 此时,将对比从磁盘读入的Serializable与对象所属类(如Person)的Serializable,若二者一致,则转换成功。若二者不一致,则转换失败,并抛出InvalidClassException。
如果没有为类指定serialVersionUID,则JVM会自动根据类的内容生成一个serialVersionUID,类中的任何变化均会导致serialVersionUID的变化,如新增一个空格。
因此,若一个类没有指定serialVersionUID,而且发生了变化,则读取磁盘中的对象时就会报错。

个人见解:我认为平常开发过程中没有必要添加serialVersionUID 因为该类可能会存在改变,最好是在发布到容器前统一生成,再一个除非兼容,否则也没必要添加,强迫症晚期者请忽略。

原文:http://blog.csdn.net/jediael_lu/article/details/26813153

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值