`
aawty
  • 浏览: 32635 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

谈序列化和transient类型

阅读更多
什么是序列化:很多时候数据要放在网络上传输,或者存到数据库中,这时候要将这些数据变

成二进制数字节数组,通过保存或转移这些字节数据达到持久化。准确来说就是将对象变成二

进制输出流的过程就是序列化。相应的将将二进制流变成对象的过程就是反序列化的过程,这

时候根据序列化ID来查看是否是对应的实体类。

什么是序列化ID?序列化ID有两种:1.默认的:1L;2.自动生成的:是根据接口名、类名、

方法和属性生成的64位的哈希字段。

序列化的情况:1.父类继承Serializable接口,所有子类都可以被序列化。

    2.子类实现了Serialiazable接口,父类没有,父类属性不能序列化,子类可以。

    3.如果序列化的属性是对象,这个对象也必须实现Serializable接口,否则报错。

    4.反序列化的时候,属性有修改或删减的会丢失,但不报错。

    5.反序列化时SerialVersionuid被修改,反序列化失败。

transient:对于特殊的数据成员,在序列化的时候想保存它,就可以transient。

当对象在序列化的时候,transient类型的数据就不包含在序列化的表示中,非transient

包含在序列化表示中。
分享到:
评论

相关推荐

    java 对象的序列化与反序列化

    Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...

    深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字)

    今天,我们将深入理解Java虚拟机-Java内存区域透彻分析,探讨序列化和反序列化的概念及其使用场景,实现序列化的方式,以及transient关键字的作用。 序列化和反序列化的概念 序列化是指将Java对象转换为二进制数据...

    java对象序列化和反序列化

    - 非公开(private)成员变量也会被序列化,如果不想序列化某些字段,可以使用`transient`关键字。 - 序列化可能导致安全问题,如对象的敏感信息暴露,需谨慎处理。 **二、Java反序列化** 1. **定义**:Java反...

    java serializable 序列化与反序列化

    - ** transient 关键字**:如果某个字段不需要序列化,可以使用`transient`关键字修饰。序列化时,这些字段会被忽略。 - **readObject() 和 writeObject()** 方法:可以覆盖这两个方法来自定义序列化和反序列化的...

    JAVA对象的序列化与反序列化详细PPT课件.pptx

    Java对象的序列化和反序列化是Java编程中的一项重要技术,主要应用于数据持久化、网络传输等场景。本课件详细介绍了这一概念及其在实际应用中的操作。 首先,序列化是将Java对象转化为字节序列的过程,目的是为了...

    Java对象序列化标准最新版

    在设计可序列化的类时,建议对每个可序列化字段进行文档说明,包括字段的数据类型和用途等。这对于理解序列化过程非常重要,特别是在维护代码或与其他开发人员协作时。 **1.7 访问可序列化字段** 在序列化过程中,...

    对象的序列化和反序列化

    对象的序列化和反序列化是Java编程语言中重要的概念,它们主要用于持久化对象的状态,以便在需要时能够恢复。序列化是将一个对象转换为字节流的过程,而反序列化则是将字节流还原为原来的对象。这两个过程在许多场景...

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

    在Java编程语言中,对象的序列化和反序列化是两个关键的概念,它们对于数据存储、网络传输以及持久化有着重要的作用。这篇文章将深入探讨这两个主题,并通过实践例子来阐述其工作原理。 **序列化(Serialization)*...

    Java序列化

    5. **transient和volatile关键字** - `transient` 关键字可以标记字段,表示这个字段不应该参与序列化过程,即不会被序列化到字节流中。 - `volatile` 关键字与序列化无关,但通常与多线程同步有关,序列化时不会...

    Java序列化_Java序列化结构_

    当一个对象被序列化时,其所有字段(包括私有的)都会被包含在字节流中,除非这些字段被`transient`或`static`关键字修饰,这两个关键字声明的字段不会参与序列化。 序列化的过程通常涉及到以下步骤: 1. 创建一个...

    java基础 对象序列化

    这种方法提供了更高级别的控制,允许开发者决定哪些数据应该被序列化,以及如何序列化和反序列化数据。 #### 使用transient关键字保护数据 `transient`关键字用于标记那些不应被序列化的变量。当一个字段被声明为`...

    java 对象默认序列化的干预方法

    总之,Java对象的序列化可以通过`transient`关键字来排除某些字段,同时可以利用`writeObject()`和`readObject()`方法自定义序列化和反序列化的行为,以满足特定需求,例如处理`transient`字段的序列化,以及在网络...

    java序列化实现演示

    当一个类被序列化时,JVM会自动计算该类的`serialVersionUID`,这个值基于类的结构,如字段类型和名称。如果在反序列化时,类的结构发生变化(比如添加、删除或修改了字段),但是`serialVersionUID`未更新,那么就...

    反序列化作用

    在反序列化时,JVM会读取对象类型和版本信息,并根据这些信息生成对象实例,然后将字节流中的数据复制到对象的数据成员中。 在使用Java序列化机制时,有几个注意事项: a) 序列化对象时,需要确保对象类及其成员...

    序列化和反序列化1

    这意味着`ArrayList`提供了自定义的序列化策略,即使`elementData`被声明为`transient`,它仍然能够被正确地序列化和反序列化。 自定义的`writeObject()`和`readObject()`方法允许开发者在序列化过程中增加更多的...

    Java transient关键字与序列化操作实例详解

    Java transient关键字...transient关键字和序列化操作是Java语言中的两个重要特性,transient关键字可以用于修饰变量,以避免其被JVM序列化,而序列化操作可以将对象转换为二进制流,以便在网络上传输或保存到文件中。

    Java中的序列化与反序列化.pdf

    此外,如果一个类包含不希望被序列化的字段,可以通过添加`transient`关键字来标记这些字段,它们将不会被包含在序列化过程中。 另外,Java还提供了一个更灵活的序列化接口`Externalizable`,它要求类自己控制序列...

    java序列化和反序列化1

    - 静态成员和transient修饰的成员不会被序列化,因为它们不是对象状态的一部分。 - 不推荐序列化包含大量数据或者数据库连接的大型对象,这可能导致性能问题和安全风险。 - 反序列化时需要确保类的定义与序列化时...

    java 序列化时排除指定属性

    - **使用`writeObject()`和`readObject()`方法**:重写`writeObject()`和`readObject()`方法来自定义序列化和反序列化行为。在`writeObject()`方法中,使用`defaultWriteFields()`方法来跳过不想要的字段,而在`...

Global site tag (gtag.js) - Google Analytics