Java序列化有什么作用
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序列化有什么作用相关推荐
- java 序列化概念和作用_结合代码详细解读Java序列化与反序列化概念理解
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
- Java序列化接口的作用总结1
一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做"持久化". 把堆内存中的对象的生命周期延长,存入硬盘,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从 ...
- Java序列化接口的作用总结
一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做"持久化". 把堆内存中的对象的生命周期延长,存入硬盘,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从 ...
- java序列化和反序列化以及序列化ID的作用分析
java序列化和反序列化 一.概念 java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象.对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一 ...
- [转载] Java序列化的几种方式以及序列化的作用
参考链接: Java中带有继承的对象序列化 文章转载自: 本文着重讲解一下Java序列化的相关内容. 如果对Java序列化感兴趣的同学可以研究一下. 一.Java序列化的作用 有的时候我们想要把一个 ...
- Java序列化的几种方式以及序列化的作用(文章有所改变)
本文着重讲解一下Java序列化的相关内容. 如果对Java序列化感兴趣的同学可以研究一下. 一.Java序列化的作用 有的时候我们想要把一个Java对象变成字节流的形式传出去,有的时候我们想要从 ...
- java序列化的作用
java序列化的作用 1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法 ...
- Java序列化接口Serializable接口的作用总结
一.Java序列化接口Serializable的作用: 一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做"持久化". 对象的默认序列化机制写入的内容是:对象的类,类签名, ...
- java序列化有什么用_java中序列化的作用
一 什么叫序列化 通俗点讲:它是处理对象流的一种机制,即可以很方便的保存内存中java对象的状态,同时也为了方便传输. 二 序列化有什么作用 1.方便传输,速度快,还很安全,被调用方序列化,调用方反 ...
最新文章
- 营销自动化为什么能吸引企业的喜欢?它有何魅力?
- Android中常用的编码和解码(加密和解密)的问题
- python-Django收集主机信息
- String Split 和 Join
- mysql 8.0 集群_集群架构03·MySQL初识,mysql8.0环境安装,mysql多实例
- php多人点餐可以看到对方点的菜,千万不要小看你身边那个会点菜的人,因为
- 在家“隔离”这1个月,阿里云视频云这些工程师都经历了什么?
- Android studio 3.x 安装genymotion插件
- 个性艺术创意风采人物海报,psd分层模板
- PE使用万能驱动7解决USB3、NVME驱动问题及台式机、笔记本电脑使用PE因驱动问题不能加载硬盘问题(YOGA 14C 因PE加载不了硬盘亲测可用)
- linux检测摄像头驱动程序,linux usb 摄像头测试软件
- VBScript详解(一)
- android深色模式省电吗,护眼又省电,深色模式真这么厉害?
- 【MySQL】查看mysql的warnings
- JS中 new Date() 各方法的用法
- java同时引用不同版本同一个jar包
- (附源码)计算机毕业设计SSM基于框架的旅游管理系统
- 让App推广运营更高效,必须要有这几大功能!
- 基于单层决策树的adaBoost算法思想分析和源代码解析
- Web服务器入侵痕迹检测
热门文章
- php代码浏览器缓存,php 浏览器缓存
- 校园导航系统java具有gui,[数据结构大作业]HBU Guide 河北大学校园导航
- Type C手机边充电边传输数据(OTG)的手机转接器方案
- 矩阵与高斯消元【矩阵乘法,高斯消元求线性方程组,求行列式】 全网最详,附例题与姊妹篇 一万三千字详解
- 求N个元素的全排列(C语言,递归,无脑方法)
- 浏览器url特殊字符自动转换的编解码问题:
- 类加载的五个过程:加载、验证、准备、解析、初始化
- eclipse调试tomcat
- JLU吉林大学2022-2023年度第1学期软件学院《计算机网络》真题回顾(2020级)
- Jumony(一)从扩展方法到流畅的程序体验