`
ch_space
  • 浏览: 111739 次
  • 性别: Icon_minigender_1
  • 来自: 农村进城务工人员
社区版块
存档分类
最新评论

java的serialVersionUID

    博客分类:
  • Java
阅读更多
serialVersionUID   用来表明类的不同版本间的兼容性。如果你修改了此类,   要修改此值。否则以前用老版本的类序列化的类恢复时会出错。  
      
    在JDK中,可以利用JDK的bin目录下的serialver.exe工具产生这个serialVersionUID,对于Test.class,执行命令:serialver   Test。  
   
    为了在反序列化时,确保类版本的兼容性,最好在每个要序列化的类中加入private   static   final   long   serialVersionUID这个属性,具体数值自己定义。这样,即使某个类在与之对应的对象已经序列化出去后做了修改,该对象依然可以被正确反序列化。否则,如果不显式定义该属性,这个属性值将由JVM根据类的相关信息计算,而修改后的类的计算结果与修改前的类的计算结果往往不同,从而造成对象的反序列化因为类版本不兼容而失败。  
   
    不显式定义这个属性值的另一个坏处是,不利于程序在不同的JVM之间的移植。因为不同的编译器实现该属性值的计算策略可能不同,从而造成虽然类没有改变,但是因为JVM不同,出现因类版本不兼容而无法正确反序列化的现象出现。  
   
    当我们的系统不太经常需要序列化类时,可以去掉这些警告,做如下设置:Window-->Preferences-->Java,将serializable   class   without   serialVersionUID的设置由warning改为Ignore。然后Eclipse会重新编译程序,那些警告信息也就消失了。
分享到:
评论

相关推荐

    Java中serialVersionUID的解释

    Java 中 serialVersionUID 的解释 Java 中的 serialVersionUID 是一个非常重要的概念,在实现 Serializable 接口的类中,它扮演着至关重要的角色。那么,serialVersionUID到底是什么?它又是如何生成的?在本篇文章...

    java类中serialVersionUID的作用及其使用

    Java类中serialVersionUID的作用及其使用 Java类中serialVersionUID是一种特殊的静态变量,用于标识类的序列化版本。它是Java语言中实现Serializable接口的类必须定义的变量,用于在反序列化时验证类的版本一致性。...

    coreJava: serialVersionUID

    在Java编程中,`serialVersionUID` 是一个非常重要的概念,特别是在序列化和反序列化过程中。这个特殊标识符主要用于版本控制,确保不同版本的类在序列化和反序列化时能够正确匹配。当我们讨论`serialVersionUID`时...

    java类中serialVersionUID详解.pdf

    ### Java 类中 `serialVersionUID` 详解 #### 一、`serialVersionUID` 概述 在 Java 中,`serialVersionUID` 是一个与类关联的长整型常量,用于支持序列化机制。当一个对象被序列化时,该对象所属类的 `...

    详述IntelliJ IDEA 中自动生成 serialVersionUID 的方法(图文)

    在 Java 序列化机制中,serialVersionUID 是一个不可或缺的角色,它可以通过在运行时判断类的 serialVersionUID 来验证版本一致性。在进行反序列化时,JVM 会把传来的字节流中的 serialVersionUID 与本地相应实体...

    全面解释Java中的serialVersionUID

    Java中的`serialVersionUID`是一个非常重要的概念,尤其是在处理序列化和反序列化操作时。序列化是将对象的状态转换为字节流的过程,而反序列化则是将字节流恢复为对象状态。`serialVersionUID`的主要作用是确保在类...

    614.612.JAVA基础教程_IO流与网络编程-serialVersionUID的理解(614).rar

    `serialVersionUID`在Java序列化过程中起着关键作用。 首先,让我们来理解什么是IO流。IO流是Java中处理数据输入和输出的一种机制。Java提供了一整套类库来支持不同类型的流,包括字符流和字节流,它们分别处理文本...

    java序列化和serialVersionUID的使用方法实例

    Java 序列化和 serialVersionUID 的使用方法实例 Java 序列化是指将 Java 对象转换为二进制流的过程,以便在网络中传输或持久化到数据库或文件系统中。序列化的作用是将 Java 对象的状态保存起来,以便下次使用时...

    serialVersionUID.txt

    三期第一张IO笔记 6

    java串行化详细的介绍了java串行化的概念

    如果两个不同版本的类具有相同的`serialVersionUID`,那么在反序列化过程中可能会出现`InvalidClassException`异常,这是因为Java序列化机制认为这两个版本是不兼容的。 #### 五、`serialVersionUID`的定义 `...

    序列化版本号serialVersionUID的作用_动力节点Java学院整理

    序列化版本号serialVersionUID的作用_动力节点Java学院整理.

    25个经典Spark算子的JAVA实现

    根据给定文件的信息,本文将详细介绍25个经典Spark算子的Java实现,并结合详细的注释及JUnit测试结果,帮助读者更好地理解Spark算子的工作原理及其应用方式。 ### Spark算子简介 在Apache Spark框架中,算子是用于...

    java.io.InvalidClassException local class incompatible 处理方法

    当这个对象被反序列化时,序列化运行时会计算出该类当前的`serialVersionUID`并与序列化文件中的值进行比较,如果不一致,则会抛出`java.io.InvalidClassException`异常。 #### 为什么需要显式声明serialVersionUID...

    Java基础教程完整版

    本章节主要讲解Java的序列化机制,包括Serializable接口、Externalizable接口、transient关键字、serialVersionUID变量等。 Java学习系列(十三):Java面向对象之界面编程 本章节主要讲解Java的界面编程,包括AWT...

    serialVersionUID作用全面解析

    serialVersionUID 是 Java 序列化机制中一个非常重要的概念,它是 Java 序列化机制的核心组件。 serialVersionUID 是一个长整型常量,用于标识类的版本号。在 Java 序列化机制中,serialVersionUID.play 一个非常...

    java序列化实现演示

    在给定的链接"Java序列化机制(2)- serialVersionUID 实验"中,博主通过一个实验详细解释了`serialVersionUID`的作用和重要性。实验可能包括以下步骤: 1. 创建一个实现`Serializable`接口的简单类,并运行序列化...

    基于Java实现的图像识别

    private static final long serialVersionUID = 1L; private JButton browseBtn; private JButton histogramBtn; private JButton compareBtn; private Dimension mySize; // image operator private ...

    Java序列化_Java序列化结构_

    Java序列化还支持版本控制,即`serialVersionUID`。这个版本号用于验证序列化过程中类的兼容性。如果类在序列化后进行了修改,`serialVersionUID`应该相应更新,否则反序列化可能会失败。如果没有显式定义,Java会...

    构造java探测class反序列化gadget1

    Java在反序列化时会检查对象的serialVersionUID,以确保序列化和反序列化时的类版本匹配。如果本地和远程的serialVersionUID不一致,反序列化将失败。关键代码位于`java.io.ObjectStreamClass#initNonProxy`方法中,...

    java编写根据模板导出excel

    private static final long serialVersionUID = 1L; private String filename; @SuppressWarnings("rawtypes") public String export() throws Exception { String templateFile = "18.xls"; // String sql...

Global site tag (gtag.js) - Google Analytics