`
fujinbing
  • 浏览: 239901 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

serialVersionUID 在 java 中的作用

    博客分类:
  • java
阅读更多
 serialVersionUID作用:

  在序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
   
    有两种生成方式:

  一个是默认的1L,比如:private static final long serialVersionUID = 1L;

  一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:

  private static final   long     serialVersionUID = xxxxL;

  当你一个类实现了Serializable接口,如果没有定义serialVersionUID,Eclipse会默认提供这个


     例1:
    bean:
     public class Save implements Serializable{

String name;

      }

     Test class
     public class SerialTest {    
      public read() throws IOException, ClassNotFoundException{
Save save=null;
         
FileInputStream fi=new FileInputStream("foo");
ObjectInputStream ois=new ObjectInputStream(fi);
save=(Save) ois.readObject();
System.out.println(save);

}
   
       public write(Object obj) throws IOException{
   FileOutputStream f=new FileOutputStream("foo");
   ObjectOutputStream oos=new ObjectOutputStream(f);
   oos.writeObject(obj);
     }
      
public static void main(String args[]) throws IOException, ClassNotFoundException{
write();  
//read();
}
}

1.当bean(Save )使用默认的serialVersionUID 时,若给bean(Save )增加属性时,会导致serialVersionUID 变化若这时read()(以前序列化结果,会版本不一致)
2.若使用显示serialVersionUID 的赋值,并且保持属性更改前后一致(当然serialVersionUID 不一致肯定不行),会给属性赋默认值

分享到:
评论

相关推荐

    Java中serialVersionUID的解释

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

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

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

    java类中serialVersionUID的作用及其使用

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

    java类中serialVersionUID详解.pdf

    #### 五、`serialVersionUID` 在序列化过程中的作用 1. **序列化实体类示例**: ```java package com.sf.code.serial; import java.io.Serializable; public class Person implements Serializable { ...

    coreJava: serialVersionUID

    在Java中,实现序列化的类需要实现`java.io.Serializable`接口。然而,仅仅实现这个接口并不足以确保序列化和反序列化始终成功,因为类的结构可能会随时间发生变化,如增加、删除或修改字段。这就是`...

    serialVersionUID作用全面解析

    在 Java 序列化机制中,serialVersionUID.play 一个非常重要的角色,它是 Java 序列化机制的核心组件。 serialVersionUID 的作用可以归纳为以下几点: 1. 版本控制:serialVersionUID 是用来标识类的版本号的。在...

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

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

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

    在Java中,IO流(Input/Output Stream)和网络编程是两个至关重要的领域。本教程将深入探讨这两个主题,并特别关注`serialVersionUID`这个概念。`serialVersionUID`在Java序列化过程中起着关键作用。 首先,让我们...

    全面解释Java中的serialVersionUID

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

    教你如何在java中自定义事件

    本教程将深入探讨如何在Java中创建并使用自定义事件,以帮助你提升编程技能。 一、事件与事件监听器基础 在Java AWT和Swing库中,事件模型是基于观察者模式的。事件通常由一个对象(称为事件源)生成,然后被传递...

    serialVersionUID.txt

    三期第一张IO笔记 6

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

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

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

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

    java序列化实现演示

    在Java中,如果一个类需要支持序列化,它应该实现`java.io.Serializable`接口。 在Java序列化过程中,`serialVersionUID`扮演着至关重要的角色。`serialVersionUID`是一个长期不变的标识符,用于验证序列化版本的...

    java中的SuppressWarnings(xxx).doc

    在 Java 中,当一个类实现了java.io.Serializable接口时,编译器会提示一个黄色的警告,因为该类没有提供 serialVersionUID 字段。serialVersionUID 是一个私有静态常量,用于标识类的版本号。在序列化和反序列化...

    构造java探测class反序列化gadget1

    在Java编程中,反序列化是一个常见的操作,它允许对象的状态从序列化的形式恢复到原始的对象状态。然而,这个过程也可能带来安全风险,尤其是当恶意代码利用不安全的反序列化来执行任意代码时。本篇讨论的是如何在...

    java序列化(Serializable)的作用和反序列化.doc

    在Java中,通过实现`Serializable`接口,可以方便地进行对象的序列化操作。序列化的核心在于能够将对象的状态转换为可以存储或传输的形式,从而实现对象的持久化和远程通信等功能。 #### 二、序列化的应用场景 ...

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

    为了避免序列化过程中出现`java.io.InvalidClassException`异常,特别是处理序列化对象版本兼容性问题时,强烈推荐在所有可序列化的类中显式声明`serialVersionUID`。这不仅可以提高程序的稳定性和健壮性,还能简化...

    java 序列化代码示例

    在Java中,一个类如果要实现序列化,需要实现`Serializable`接口,这是一个标记接口,不包含任何方法。下面我们将详细讨论Java序列化的用途、注意事项以及如何实现。 1. **序列化用途**: - **持久化存储**:将...

Global site tag (gtag.js) - Google Analytics