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

Java的serialVersionUID真实含义

    博客分类:
  • Java
 
阅读更多

Java中Vo类实现了Serializable标示可序列化的,此时有:

	private static final long serialVersionUID = 1L;

 这个值是为了序列化和反序列化的时候使用的,如果类发生了改变如:增加方法或者增加了属性那么需要从新生成这个值,这个值的生成是基于此类的属性、方法、类名、表明而生成的一个唯一long型的hash值。

序列化和反序列化采用ObjectOutputStream和ObjectInputStream

如果版本相同,序列化之后增加了一个属性那么在serialVersionUID不变的情况下反序列化回来对应的属性为null,如果升级了版本那么报错。

其他代码如下:

class Student implements Serializable {
	private static final long serialVersionUID = -8128337695736294309L;
	private String id;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + id + "]";
	}

}
  public static void writeObject(Object o) throws Exception {
		File f = new File("d:/user.tmp");

		if (f.exists()) {

			f.delete();

		}
		FileOutputStream os = new FileOutputStream(f);
		ObjectOutputStream oos = new ObjectOutputStream(os);
		oos.writeObject(o);
		oos.close();
		os.close();
	}

  public static Student readObject(File f) throws Exception {

		InputStream is = new FileInputStream(f);
		ObjectInputStream ois = new ObjectInputStream(is);
		return (Student) ois.readObject();
	}
 
0
0
分享到:
评论

相关推荐

    Java中serialVersionUID的解释

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

    coreJava: serialVersionUID

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

    java类中serialVersionUID的作用及其使用

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

    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提供了一整套类库来支持不同类型的流,包括字符流和字节流,它们分别处理文本...

    serialVersionUID.txt

    三期第一张IO笔记 6

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

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

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

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

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

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

    serialVersionUID作用全面解析

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

    Java基础教程完整版

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

    25个经典Spark算子的JAVA实现

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

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

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

    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会...

    idea如何自动生成serialVersionUID

    IDEA中自动生成serialVersionUID是Java开发中的一项重要功能,因为serialVersionUID是一个非常重要的字段,用于验证类的版本一致性。在本文中,我们将详细介绍如何使用IDEA自动生成serialVersionUID。 首先,让我们...

    构造java探测class反序列化gadget1

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

Global site tag (gtag.js) - Google Analytics