`
sbfivwsll
  • 浏览: 63506 次
  • 性别: Icon_minigender_1
  • 来自: 四川
社区版块
存档分类
最新评论

在Java中正确实现可序列化接口(Serializable)

 
阅读更多

通常我们对一个bean的类进行可序列化实现时,一般都只继承了可序列化接口,而没有添加serialVersionUID属性,这样会引发后续的问题:

 

  1. 先写如上的代码,调用writeObject方法将这个对象序列化。
  2. 先别急着调用反序列化,为Bean类新增加一个属性b,编译类。
  3. 调用readObject方法进行反序列化,这时就会看到如下的提示:

     

    看到了吧,和serialVersionUID有关,在重新编码后,Bean类的serialVersionUID属性变了,因为编译器会重新生成一个serialVersionUID值,与原来的值不一致,再去反序列化原有的对象时就会出错。

    若我们一开始就为Bean添加一个serialVersionUID值,那不管如何修改Bean类反序列化都没有问题了,因此在对一个java bean实现序列化接口时,为其添加一个serialVersionUID值是非常有必要的(eclipse/myeclipse可以自己生成该值)。

  • 大小: 82.9 KB
  • 大小: 17.5 KB
分享到:
评论

相关推荐

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

    但在某些情况下,例如在IntelliJ IDEA(简称IDEA)中开发时,开发者可能会遇到实体类实现了序列化接口却无法自动生成序列化ID的问题。本文将详细介绍这一问题的原因以及如何解决。 #### 二、序列化简介 序列化是将...

    Java序列化(Serializable)与反序列化__1.docx

    Java序列化(Serializable)是Java平台提供的一种持久化机制,允许将对象的状态转换为字节流,以便存储到磁盘、数据库中,或者在网络上传输。这一过程被称为对象的序列化。反之,将字节流恢复为原来的对象状态称为反...

    Java序列化(Serializable)与反序列化_.docx

    Java中的序列化主要是通过实现`Serializable`接口完成的,该接口没有声明任何方法,是一个标记接口。实现这个接口的类会被认为是可以被序列化的。 #### 关键属性`serialVersionUID` 1. **作用**:`...

    Java对象Serializable接口实现详解

    Serializable序列化接口没有任何方法或者字段,只是用于标识可序列化的语义。实现了Serializable接口的类可以被ObjectOutputStream转换为字节流,同时也可以通过ObjectInputStream再将其解析为对象。 Serializable...

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

    在实现序列化时,Java会捕获对象的所有实例变量,包括它们的值,同时还会记录一些元数据,如类名、版本信息等,以确保在反序列化时能正确恢复对象。 4. **如何实现序列化?** 要实现序列化,对象的类必须实现`...

    java序列化和反序列化

    - 实现此接口后,Java虚拟机就能够自动进行序列化和反序列化操作。 2. **序列化过程:** - 创建一个`java.io.ObjectOutputStream`实例。 - 使用`ObjectOutputStream`的`writeObject()`方法将对象写出到输出流中...

    Java对象序列化标准最新版

    这些规则确保了对象可以在不同的环境中被正确序列化和反序列化。 **6.2 流元素** 序列化流由一系列元素组成,包括对象类型、对象状态等信息。 **6.3 流协议版本** 序列化流支持不同的版本。不同的版本可能会有...

    java 中序列化NotSerializableException问题解决办法

    NotSerializableException 是 Java 中的一个异常,它发生在尝试序列化一个不implement Serializable 接口的对象时。今天,我们将讨论 Java 中序列化 NotSerializableException 问题的解决办法。 问题描述 --------...

    Java中Tree的序列化

    在Java中,一个类可以实现`Serializable`接口来使其实例可序列化。例如: ```java public class TreeNode implements Serializable { // ... } ``` 序列化的过程通常使用`ObjectOutputStream`类完成,如下所示: ...

    FST:快速Java序列化的替代品

    8. **序列化版本控制**:FST提供版本控制功能,即使序列化接口发生变化,也能保证旧版本的数据可以被正确反序列化。 在实际应用中,我们可以通过以下步骤使用FST: 1. **添加依赖**:将FST库引入到项目中,通常...

    如何正确的使用Java序列化技术

    在此示例中,`Person` 类继承自 `Humanoid` 类,并实现了 `Serializable` 接口,这使得 `Person` 类可以被序列化。 #### 1.2 对象的序列化及反序列化 为了将可序列化的对象序列化到文件或其他存储介质中,需要使用...

    24、序列化 Serializable1

    - 为了让一个类支持序列化,只需让该类实现`java.io.Serializable`接口。这个接口没有定义任何方法,只是一个标记接口,表明类的对象可以被序列化。 4. **序列化ID** - `serialVersionUID`是一个长整型字段,用于...

    Serializable序列化

    实现序列化非常简单,只需要让类实现`java.io.Serializable`接口即可。这个接口没有任何方法需要实现,仅仅是一个标记接口,表明该类的实例是可序列化的。但是,需要注意的是,序列化会将对象的所有字段都包含进去,...

    Android-Android上的Java对象反序列化

    通过实现`java.io.Serializable`接口,一个Java对象可以获得序列化的能力。序列化不仅可以保存对象的状态,还可以在需要时恢复这些状态。 2. **反序列化**: 反序列化是序列化的逆过程,即将字节流还原为原来的Java...

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

    在Java中,要实现序列化,对象的类需要实现`java.io.Serializable`接口。例如,`ObjectSaver.java`文件可能包含一个实现了序列化的类定义: ```java public class MySerializableObject implements Serializable { ...

    Java序列化的机制和原理

    为了使一个对象可以被序列化,该对象的类必须实现`java.io.Serializable`接口。这个接口没有任何方法,只是一个标记接口,表明实现了它的类的对象可以被序列化。例如: ```java import java.io.Serializable; ...

    浅谈java中为什么实体类需要实现序列化

    在Java中,实现序列化的类需要实现java.io.Serializable接口,否则将会抛出异常。 首先,为什么需要序列化?在web应用程序中,服务器需要保存某些对象的状态,以便在下一次会话中继续使用这些对象。这些对象称为...

    Java安全漫谈 - 07.反序列化篇(1)1

    在Java中,反序列化通常是通过实现`Serializable`接口并在类中包含`readObject`方法来完成的。 在Java中,`readObject`方法被设计用来在反序列化过程中恢复对象的状态。与PHP的`__wakeup`魔术方法不同,`readObject...

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

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

    java序列化原理与算法

    首先,我们需要创建一个实现了`Serializable`接口的类`TestSerial`,这样Java序列化机制才能处理这个类的对象。 接下来,我们编写代码将对象序列化并输出为字节流,存储在一个临时文件`temp.out`中。 ```java ...

Global site tag (gtag.js) - Google Analytics