关于java/android 数据序列化后SerialVersionUID的获取

本人android 开发,遇到了一个关于数据序列化的坑,纪录下来以便以后查看。

 所有需要序列化本地的bean都需要继承Serializable 否则无法序列化(如果不了解序列化的知识请自行百度)。

 我继承了Serializable 但是没有设置SerialVersionUID 最后编译后系统根据bean的变量自己生成了一个。

 随着程序的迭代,需要修改bean的结构最终导致,新版本的APK在读取这个bean后无法得到它的值,因为它的成员变量结构改变了。导致SerialVersionUID不一致了。

 但是我又想能读到序列化的这个bean怎么办?我产生了一个想法如果我知道旧版本的bean的SerialVersionUID值,然后在新版的bean里设置SerialVersionUID是一样的那么不就可以读出来了吗?

经过一系列的查找java 给我们提供了一个可以获取SerialVersionUID的方法,代码如下

 ObjectStreamClass osc2 = ObjectStreamClass.lookup(Calendar.class);

      // get the serial for Calendar
      System.out.println("" + osc2.getSerialVersionUID());
这样的两句话就可以打印出来UID 了,拿到UID 我在新版本里赋值成一样的即可。 我的问题就解决了。让我感慨学无止境啊
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值