最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java反序列化serialVersionUID不一致問題及解決

 更新時間:2025年11月21日 14:09:26   作者:sinat_28114651  
文章主要討論了在Java中序列化和反序列化過程中遇到的問題,特別是當(dāng)實體類的`serialVersionUID`發(fā)生變化或未設(shè)置時,以及實體類屬性有變更時,文章提出了解決方法,通過實現(xiàn)`ObjectInputStream`類并重寫`readClassDescriptor`方法來處理這些問題

前言

serialVersionUID變化后,反序列化失?。▽嶓w類的serialVersionUID被修改或沒有設(shè)置serialVersionUID,實體類屬性有變更)

記錄遇到的問題,不保證正確。

一、序列化、反序列化

二、解決方法

實現(xiàn)ObjectInputStream類,重寫readClassDescriptor方法

class DecompressibleInputStream extends ObjectInputStream {
    
public DecompressibleInputStream(InputStream in) throws IOException {
    super(in);
}
@Override
protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException {
    ObjectStreamClass resultClassDescriptor = super.readClassDescriptor();
    Class localClass;
    try {
        localClass = Class.forName(resultClassDescriptor.getName());
    } catch (ClassNotFoundException e) {
        return resultClassDescriptor;
    }
    ObjectStreamClass localClassDescriptor = ObjectStreamClass.lookup(localClass);
    if (localClassDescriptor != null) {
        final long localSUID = localClassDescriptor.getSerialVersionUID();
        final long streamSUID = resultClassDescriptor.getSerialVersionUID();
        if (streamSUID != localSUID) {
            try {
                Field suid = resultClassDescriptor.getClass().getDeclaredField("suid");
                suid.setAccessible(true);
                suid.set(resultClassDescriptor, localSUID);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    return resultClassDescriptor;
}

}
  • 使用:

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot集成mybatis連接oracle的圖文教程

    SpringBoot集成mybatis連接oracle的圖文教程

    這篇文章主要介紹了Spring Boot集成mybatis連接oracle的圖文教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java中Map.merge()方法使用示例詳解

    Java中Map.merge()方法使用示例詳解

    這篇文章主要介紹了Map.merge()方法使用和介紹,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Java過濾器@WebFilter用法詳解

    Java過濾器@WebFilter用法詳解

    @WebFilter用于將一個類聲明為過濾器,該注解將會在部署時被容器處理,容器將根據(jù)具體的屬性配置將相應(yīng)的類部署為過濾器,這篇文章主要給大家介紹了關(guān)于Java過濾器@WebFilter用法的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Java Web開發(fā)中過濾器和監(jiān)聽器使用詳解

    Java Web開發(fā)中過濾器和監(jiān)聽器使用詳解

    這篇文章主要為大家詳細(xì)介紹了Java中的過濾器Filter和監(jiān)聽器Listener的使用以及二者的區(qū)別,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-10-10
  • Java Stream 流實現(xiàn)合并操作示例

    Java Stream 流實現(xiàn)合并操作示例

    這篇文章主要介紹了Java Stream 流實現(xiàn)合并操作,結(jié)合實例形式詳細(xì)分析了Java Stream 流實現(xiàn)合并操作原理與相關(guān)注意事項,需要的朋友可以參考下
    2020-05-05
  • 教新手使用java如何對一個大的文本文件內(nèi)容進(jìn)行去重

    教新手使用java如何對一個大的文本文件內(nèi)容進(jìn)行去重

    用HashSet對內(nèi)容去重這個過程jvm會內(nèi)存溢出,只能首先將這個大文件中的內(nèi)容讀取出來,對每行String的hashCode取模取正整數(shù),可用取模結(jié)果作為文件名,將相同模數(shù)的行寫入同一個文件,再單獨對每個小文件進(jìn)行去重,最后再合并
    2021-06-06
  • Java中的時間戳各種操作方法詳解

    Java中的時間戳各種操作方法詳解

    在Java中時間戳指自1970年1月1日午夜(UTC)以來的毫秒數(shù),Java提供了多種方式獲取和操作時間戳,包括System.currentTimeMillis()、java.util.Date、java.sql.Timestamp類,Java8及以后版本引入了java.time包,增強(qiáng)了日期時間處理能力,需要的朋友可以參考下
    2024-10-10
  • Java Socket實現(xiàn)猜數(shù)字小游戲

    Java Socket實現(xiàn)猜數(shù)字小游戲

    這篇文章主要為大家詳細(xì)介紹了Java Socket實現(xiàn)猜數(shù)字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • MyBatis中的SQL映射文件配置結(jié)果映射的操作指南

    MyBatis中的SQL映射文件配置結(jié)果映射的操作指南

    MyBatis?是一款優(yōu)秀的?ORM?框架,它提供了多種配置方式來定義?SQL?語句以及結(jié)果映射規(guī)則,本文將介紹?MyBatis?中的?SQL?映射文件如何配置結(jié)果映射,包括常規(guī)類型、集合類型等多種情況,需要的朋友可以參考下
    2023-07-07
  • Java消息隊列RabbitMQ入門詳解

    Java消息隊列RabbitMQ入門詳解

    這篇文章主要介紹了Java消息隊列RabbitMQ入門詳解,RabbitMQ是使用Erlang語言開發(fā)的開源消息隊列系統(tǒng),基于AMQP協(xié)議 來實現(xiàn),AMQP的主要特征是面向消息、隊列、路由(包括點對點和發(fā)布 /訂閱)、可靠性、安全,需要的朋友可以參考下
    2023-07-07

最新評論

宁波市| 石首市| 义乌市| 正镶白旗| 马山县| 宜黄县| 昌乐县| 大理市| 嘉荫县| 秦皇岛市| 睢宁县| 关岭| 松原市| 凉山| 交城县| 大名县| 化德县| 汉阴县| 顺平县| 土默特左旗| 庄河市| 娱乐| 和田市| 无锡市| 闸北区| 武胜县| 瑞金市| 巴中市| 当涂县| 鄂伦春自治旗| 宁城县| 德安县| 台山市| 青海省| 东源县| 皋兰县| 沿河| 金湖县| 磐安县| 梁山县| 琼结县|