Java序列化有什么作用

  • 一、作用
  • 二、为什么没有被序列化的对象,也能进行传输
  • 三、序列化的方式
    • 1、Serializable 接口
    • 2、Externalizable 接口

一、作用

对java对象进行序列化之后,会变成字节码,这样就会比较方便在网络上进行传输,也可以在磁盘上进行存储。

序列化:把Java对象转换为字节序列。
反序列化:把字节序列恢复为原先的Java对象。

二、为什么没有被序列化的对象,也能进行传输

代码如下:

public class DbmDB2Info {//服务器信息private Integer serverId;private String serverName;//主机信息private String hostName;private String hostIp;private String osType;

原因就是:在声明变量的时候,例如String、int、Boolean等时,数据类型已经实现了序列化
可以看一下源码:String类型本身就已经实现了Serializable序列化接口

public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {/** The value is used for character storage. */private final char value[];

三、序列化的方式

java对象需要进行序列化,可以实现下面两个接口中的一个:Serializable 接口
Externalizable 接口

1、Serializable 接口

一个对象想要被序列化,那么它的类就要实现此接口或者它的子接口。

这个对象的所有属性(包括private属性、包括其引用的对象)都可以被序列化和反序列化来保存、传递。

不想序列化的字段可以使用transient修饰。

由于Serializable对象完全以它存储的二进制位为基础来构造,因此并不会调用任何构造函数,因此Serializable类无需默认构造函数,但是当Serializable类的父类没有实现Serializable接口时,反序列化过程会调用父类的默认构造函数,因此该父类必需有默认构造函数,否则会抛异常。使用transient关键字阻止序列化虽然简单方便,但被它修饰的属性被完全隔离在序列化机制之外,导致了在反序列化时无法获取该属性的值,而通过在需要序列化的对象的Java类里加入writeObject()方法与readObject()方法可以控制如何序列化各属性,甚至完全不序列化某些属性或者加密序列化某些属性。

2、Externalizable 接口

它是Serializable接口的子类,用户要实现的writeExternal()和readExternal() 方法,用来决定如何序列化和反序列化。

因为序列化和反序列化方法需要自己实现,因此可以指定序列化哪些属性,而transient在这里无效。

对Externalizable对象反序列化时,会先调用类的无参构造方法,这是有别于默认反序列方式的。如果把类的不带参数的构造方法删除,或者把该构造方法的访问权限设置为private、默认或protected级别,会抛出java.io.InvalidException: no valid constructor异常,因此Externalizable对象必须有默认构造函数,而且必需是public的。

Java序列化有什么作用相关推荐

  1. java 序列化概念和作用_结合代码详细解读Java序列化与反序列化概念理解

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...

  2. Java序列化接口的作用总结1

    一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做"持久化". 把堆内存中的对象的生命周期延长,存入硬盘,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从 ...

  3. Java序列化接口的作用总结

    一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做"持久化". 把堆内存中的对象的生命周期延长,存入硬盘,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从 ...

  4. java序列化和反序列化以及序列化ID的作用分析

     java序列化和反序列化 一.概念 java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象.对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一 ...

  5. [转载] Java序列化的几种方式以及序列化的作用

    参考链接: Java中带有继承的对象序列化 文章转载自:  本文着重讲解一下Java序列化的相关内容. 如果对Java序列化感兴趣的同学可以研究一下. 一.Java序列化的作用 有的时候我们想要把一个 ...

  6. Java序列化的几种方式以及序列化的作用(文章有所改变)

    本文着重讲解一下Java序列化的相关内容. 如果对Java序列化感兴趣的同学可以研究一下. 一.Java序列化的作用    有的时候我们想要把一个Java对象变成字节流的形式传出去,有的时候我们想要从 ...

  7. java序列化的作用

    java序列化的作用 1.序列化是干什么的?        简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法 ...

  8. Java序列化接口Serializable接口的作用总结

    一.Java序列化接口Serializable的作用: 一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做"持久化". 对象的默认序列化机制写入的内容是:对象的类,类签名, ...

  9. java序列化有什么用_java中序列化的作用

    一  什么叫序列化 通俗点讲:它是处理对象流的一种机制,即可以很方便的保存内存中java对象的状态,同时也为了方便传输. 二 序列化有什么作用 1.方便传输,速度快,还很安全,被调用方序列化,调用方反 ...

最新文章

  1. 营销自动化为什么能吸引企业的喜欢?它有何魅力?
  2. Android中常用的编码和解码(加密和解密)的问题
  3. python-Django收集主机信息
  4. String Split 和 Join
  5. mysql 8.0 集群_集群架构03·MySQL初识,mysql8.0环境安装,mysql多实例
  6. php多人点餐可以看到对方点的菜,千万不要小看你身边那个会点菜的人,因为
  7. 在家“隔离”这1个月,阿里云视频云这些工程师都经历了什么?
  8. Android studio 3.x 安装genymotion插件
  9. 个性艺术创意风采人物海报,psd分层模板
  10. PE使用万能驱动7解决USB3、NVME驱动问题及台式机、笔记本电脑使用PE因驱动问题不能加载硬盘问题(YOGA 14C 因PE加载不了硬盘亲测可用)
  11. linux检测摄像头驱动程序,linux usb 摄像头测试软件
  12. VBScript详解(一)
  13. android深色模式省电吗,护眼又省电,深色模式真这么厉害?
  14. 【MySQL】查看mysql的warnings
  15. JS中 new Date() 各方法的用法
  16. java同时引用不同版本同一个jar包
  17. (附源码)计算机毕业设计SSM基于框架的旅游管理系统
  18. 让App推广运营更高效,必须要有这几大功能!
  19. 基于单层决策树的adaBoost算法思想分析和源代码解析
  20. Web服务器入侵痕迹检测

热门文章

  1. php代码浏览器缓存,php 浏览器缓存
  2. 校园导航系统java具有gui,[数据结构大作业]HBU Guide 河北大学校园导航
  3. Type C手机边充电边传输数据(OTG)的手机转接器方案
  4. 矩阵与高斯消元【矩阵乘法,高斯消元求线性方程组,求行列式】 全网最详,附例题与姊妹篇 一万三千字详解
  5. 求N个元素的全排列(C语言,递归,无脑方法)
  6. 浏览器url特殊字符自动转换的编解码问题:
  7. 类加载的五个过程:加载、验证、准备、解析、初始化
  8. eclipse调试tomcat
  9. JLU吉林大学2022-2023年度第1学期软件学院《计算机网络》真题回顾(2020级)
  10. Jumony(一)从扩展方法到流畅的程序体验