`
lovnet
  • 浏览: 6969621 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

序列化接口的id有什么用?

 
阅读更多

对象经常要通过IO进行传送,让你写程序传递对象,你会怎么做?把对象的状态数据用某种格式写入到硬盘,Person->“zxx,male,28,30000”àPerson,既然大家都要这么干,并且没有个统一的干法,于是,sun公司就提出一种统一的解决方案,它会把对象变成某个格式进行输入和输出,这种格式对程序员来说是透明(transparent)的,但是,我们的某个类要想能被sun的这种方案处理,必须实现Serializable接口。

ObjectOutputStream.writeObject(obj);

Object obj = ObjectInputStream.readObject();

假设两年前我保存了某个类的一个对象,这两年来,我修改该类,删除了某个属性和增加了另外一个属性,两年后,我又去读取那个保存的对象,或有什么结果?未知!sun的jdk就会蒙了。为此,一个解决办法就是在类中增加版本后,每一次类的属性修改,都应该把版本号升级一下,这样,在读取时,比较存储对象时的版本号与当前类的版本号,如果不一致,则直接报版本号不同的错!

分享到:
评论

相关推荐

    IDEA中实体类实现了序列化接口

    ### IDEA中实体类实现序列化接口与序列化ID生成 #### 一、序言 在Java开发中,序列化是一项非常重要的技术,它允许将对象的状态转换为字节流,从而方便在网络上传输或者存储到磁盘上。为了保证序列化的兼容性与...

    java序列化和反序列化的方法

    在本例中,我们使用 Serializable 接口实现序列化和反序列化,以便在网络上传输 UserMessage 对象。 Java 序列化和反序列化的优点包括: * 实现对象的持久化存储 * 实现对象的网络传输 * 实现对象的克隆 * 实现...

    可序列化接口Serializable

    当你在一个类上声明实现了这个接口,你实际上是在告诉JVM(Java虚拟机)该类的对象可以被序列化。序列化是指将对象的状态转换为字节流的过程,这使得对象可以在网络上传输或保存到磁盘上,以便稍后恢复其状态。 **...

    java serializable 序列化与反序列化

    2. **为什么需要序列化**:序列化有以下主要用途: - 持久化对象:将对象保存到磁盘,即使程序关闭后,也能恢复对象状态。 - 远程通信:在网络间传输对象,序列化可以使对象在不同JVM之间传递。 - 节省内存:通过...

    Java序列化

    2. **序列化接口** - `java.io.Serializable` 是Java序列化的基础,任何类如果想要实现序列化,就必须实现这个接口。这个接口是一个标记接口,没有定义任何方法,只是表明该类的对象可以被序列化。 3. **序列化...

    Java对象序列化标准最新版

    每个可序列化的类都应该有一个唯一的序列化ID,即`serialVersionUID`。这个ID用于确保在序列化和反序列化过程中对象的一致性。 #### 五、可序列化对象的版本管理 **5.1 概览** 由于Java对象可能会随着时间发生...

    C/C++结构体序列化配置模板化

    另外,考虑到配置文件可能需要保存在特定格式(如XML、JSON或YAML)中,可以设计一个接口,让不同格式的序列化器继承自该接口,然后通过模板参数选择合适的实现。这样可以轻松地在不同格式之间切换,而无需大量修改...

    java自动序列化

    3. 缓存:序列化有助于将对象存储在内存缓存或数据库中。 4. RMI(远程方法调用):在RMI中,对象必须是可序列化的,以便在远程服务器和客户端之间传递。 三、如何实现Java序列化 要使一个类及其所有子类可序列化,...

    对象的序列化和反序列化

    在实际应用中,我们还可以使用`transient`关键字来标记那些不需要序列化的字段,因为这些字段可能包含敏感信息或者不应该被持久化的状态。同时,`volatile`字段在序列化和反序列化过程中可能会失去其特性,因此需要...

    java 序列化代码示例

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

    java程序,序列化和反序列化操作对文件的运用

    为了避免这个问题,可以使用版本ID(serialVersionUID)来确保序列化兼容性。 ```java // 在类定义中添加版本ID private static final long serialVersionUID = 1L; ``` 文件的序列化和反序列化操作对于数据持久化...

    IO流与序列化

    6. **序列化详解**:解释了如何实现序列化接口,序列化和反序列化的API用法,以及transient关键字的作用,该关键字可以防止某个成员变量被序列化。 7. **序列化优化**:讨论了如何通过实现Externalizable接口来自...

    Java对象的序列化和反序列化实践

    在Java编程语言中,对象的序列化和反序列化是两个关键的概念,它们允许我们将对象的状态转换为可存储或传输的格式,然后再恢复为原始对象。这个过程对于数据持久化、网络传输以及跨进程通信等场景非常有用。下面将...

    对象流(序列化)

    1. **序列化接口**: 任何Java类如果想要实现序列化,就需要实现`Serializable`接口。这个接口没有任何方法,只是一个标记接口,表明该类的对象可以被序列化。例如: ```java public class MyClass implements ...

    java对象序列化 传输 保存

    1. **对象序列化的基本用法**:如何在类中声明`Serializable`接口,以及如何使用`ObjectOutputStream`和`ObjectInputStream`进行序列化和反序列化操作。 2. **序列化与持久化**:讨论了如何通过序列化将对象的状态...

    Java对象序列化的秘密

    如果类的版本发生变化但此ID未更新,反序列化时可能会抛出`InvalidClassException`。 3. **writeObject()和readObject()方法**: 自定义序列化逻辑,可以通过重写这两个方法来控制序列化过程,比如处理不可序列化的...

    java 序列化 将实体类本地序列化

    首先,要实现序列化,一个Java类必须实现`Serializable`接口。这是一个标记接口,没有定义任何方法,只是告诉Java虚拟机(JVM)这个类的对象是可以序列化的。例如: ```java public class MyEntity implements ...

    java序列化之protobuf

    与Java默认的序列化机制相比,protobuf有几个显著优点: 1. 性能:protobuf序列化和反序列化速度比Java序列化快很多。 2. 数据大小:protobuf编码的数据通常比JSON或XML更小,节省了存储和网络传输成本。 3. 版本...

    07-Java序列化面试题(10题)-新增.pdf

    为了实现 Java 序列化,需要将需要被序列化的类实现 Serializable 接口,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,接着,使用 ObjectOutputStream 对象的 ...

    序列化和反序列化会出现“k_BackingField”

    在.NET平台中使用`DataContractJsonSerializer`进行序列化和反序列化时,可能会遇到一个名为“k_BackingField”的字段出现在生成的JSON字符串中。这通常是因为.NET框架为了支持属性更改通知等特性,在某些情况下会...

Global site tag (gtag.js) - Google Analytics