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

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

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

前言

serialVersionUID變化后,反序列化失敗(實體類的serialVersionUID被修改或沒有設置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;
}

}
  • 使用:

總結

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

相關文章

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

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

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

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

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

    Java過濾器@WebFilter用法詳解

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

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

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

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

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

    教新手使用java如何對一個大的文本文件內容進行去重

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

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

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

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

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

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

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

    Java消息隊列RabbitMQ入門詳解

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

最新評論

太谷县| 渝中区| 霞浦县| 库尔勒市| 平安县| 高台县| 神木县| 班戈县| 宣威市| 滕州市| 乐陵市| 北辰区| 泾源县| 四会市| 磐安县| 神木县| 海宁市| 大港区| 绥德县| 和龙市| 广河县| 榆树市| 宿州市| 闵行区| 曲周县| 衡南县| 嘉黎县| 阳城县| 永兴县| 东乡县| 阜康市| 桂林市| 香格里拉县| 报价| 镇远县| 蓝田县| 高碑店市| 平顶山市| 武平县| 滁州市| 长治市|