zoukankan      html  css  js  c++  java
  • [转] 实体类实现Serializable序列化,自动生成serialVersionUID的办法

    今天在对一个实体类进行序列化的时候,出现了一个bug,如下:

    Error:Execution failed for task ':app:greendao'.
    > Found 1 problem(s) parsing "E:heshenghuoHeShengHuoappsrcmainjavacomhbmccheshenghuodbMsgModel.java". First problem:
      Pb(96) The serializable class MsgModel does not declare a static final serialVersionUID field of type long (536871008 at line 18).
    

    然后我这个实体类是用GreenDao存储数据库的,第一反应是难道这个类有问题,看了报错的原因,查了下发现是缺乏一个UID,什么鬼?
    完美解释:报错是要我们给这个实体类声明一个seriaVersionUID,那serialVersionUID是个什么鬼?

    Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的,在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就人为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常InvalidCastException,就是我们刚刚上面看到的这个提示。

    那如何生成serialVersionUID呢?

    第一步:在Androidstudio中点击File–Setting–Editor–Inspections–Java–Serialization issues–勾选Serializable class without"serialVersionUID"即可,然后点击OK

    第二步:选中实体类类名按住Alt+Enter,选择条目,即可生成serialVersionUID,如图:


    生成serialVersionUID如图

    大功告成!

    ————————————————
    版权声明:本文为CSDN博主「蛋蛋君de忧伤」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zhw1551706847/java/article/details/96476194

  • 相关阅读:
    pyhon3 mysql的下载和配置
    python3 进程池和线程池
    python3 udp socketserver
    python3 多进程实现socket通讯
    python3 在一个进程内开启多个线程实现socket通讯
    python3 单线程(gevent)实现并发的socket通讯
    python3 协程gevent模块(遇到IO自动切换)
    python3 greenlet模块
    python3 协程函数yeild
    python3 线程队列queue
  • 原文地址:https://www.cnblogs.com/eedc/p/13038905.html
Copyright © 2011-2022 走看看