涉及的JDK API:

ObjectOutputStream()  writeObject(obj)序列化

ObjectInputStream()  readObject()反序列化

默认的序列化方式:实现Serializable接口

序列化:

定义:将对象及其信息转换为可存储或者传输形式的过程。

常见形式:序列化为文件,序列化为字节流等

作用:易于网络上传输或者存储到硬盘

代码示例:

@org.junit.Test

public void test5(){

ObjectOutputStream stream=null;

try {//序列化到d:/a.obj

stream = new ObjectOutputStream(new FileOutputStream("d:/a.obj"));

Per per = new Per();

stream.writeObject(per);

stream.close();

} catch (FileNotFoundException e) {

} catch (IOException e) {

}

}

反序列化:

定义:将其他信息还原为java对象的过程。

代码示例:

@org.junit.Test

public void test6(){

ObjectInputStream ins=null;

try {//反序列化

ins=new  ObjectInputStream(new FileInputStream("d:/a.obj"));

} catch (FileNotFoundException e) {

} catch (IOException e) {

}

try {

Per p=(Per)ins.readObject();

System.out.println(p);

} catch (IOException e) {

} catch (ClassNotFoundException e) {

}

}

注意:

只有实现了Serializable接口或者Externalizable接口的类的对象才会被序列化。

静态的变量不会被序列化:因为静态变量属于类级别的。可能有时候实验会发现似乎也被序列化了,那是个假象,因为有可能是把序列化的过程和反序列化的过程写在了一个方法里,那么那个具有静态变量的类还是加载了的,所以。。

使用transient修饰的变量不会被序列化。

默认的反序列化不会调用任何的构造方法。

控制序列化与反序列化,可以再类中写

private void writeObject(java.io.ObjectOutputStream out) throws IOException;

private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException;

作用是:比如序列化是有些内容较敏感,可以再writeObject中进行处理。。。。

完全由类来控制序列化与反序列化:实现Externalizable接口

void writeExternal(ObjectOutput out) throws IOException

void readExternal(ObjectInput in) throws IOException , ClassNotFoundException

注意:此中方式反序列化时,会先调用类的不带参数的构造方法,如果没有了或者级别不正确,则会报错。

可序列化类的不同版本的序列化兼容性问题:

显示的定义serialVersionUID,带来的好处:

1) 在某些场合,希望类的不同版本对序列化兼容,因此需要确保类的不同版本具有相同的serialVersionUID;

2)在某些场合,不希望类的不同版本对序列化兼容,因此需要确保类的不同版本具有不同的serialVersionUID。

http://www.2cto.com/kf/201312/264301.html

java 反序列化 怎么知道类_理解java中的序列化与反序列化相关推荐

  1. 为啥JAVA虚拟机不开发系统_理解Java虚拟机体系结构

    1 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么.正是得益于Jav ...

  2. JAVA设计一个电视机类_漫谈Java程序设计中的接口应用

    Java语言提供了一种接口(interface)机制.这种接口机制使Java的面向对象编程变得更加灵活.我们可以用接口来定义一个类的表现形式,但接口不能包含任何实现.在<Thinking in ...

  3. java设计一个user类_关于JAVA设计一个用户类

    关于JAVA设计一个用户类 关注:152  答案:2  mip版 解决时间 2021-02-02 05:51 提问者安分守己的小青春 2021-02-02 02:23 设计一个用户类,该类有用户编号. ...

  4. Java正则表达式校验工具类_【Java工具类】----正则表达式校验工具类

    /** * @Title: RegexValidateUtil.java * @Package org.csun.nc.util * @Description: TODO * @author chis ...

  5. java订单编号工具类_[idmiss-common] Java 工具类之- 顺序订单号的生成

    1.前言 这是我写的工具类之一:根据日期生成唯一顺序订单号. 用Java 配合 Redis 实现包含日期的顺序订单号的生成, 效率可以达到 2500+/s 1000W+/h 个 . 2.基本介绍 框架 ...

  6. java刘备猜拳游戏类_基于java实现人机猜拳游戏

    本文实例为大家分享了java实现人机猜拳游戏的具体代码,供大家参考,具体内容如下 完成人机猜拳互动游戏的开发,用户通过控制台输入实现出拳,电脑通过程序中的随机数实现出拳,每一局结束后都要输出结果.当用 ...

  7. java 创建数组工具类_用Java创建数组工具类ArrayTool

    起步阶段写的代码,欢迎大家批评指正! public class ArrayTool { /** The constructor of the class ArrayTool,which is empt ...

  8. python中的元类_理解python中的元类

    一,理解类也是对象 在python中类同样也是一种对象,只要使用关键字class,Python解释器在执行的时候就会创建一个对象,这个对象(类)自身拥有创建对象(类实例)的能力,这就是为什么他是一个类 ...

  9. python中常用的序列化模块_Python中的序列化和反序列化

    为什么要序列化 内存中的字典.列表.集合以及各种对象,如何保存到一个文件中. 设计一套协议,按照某种规则,把内存中的数据保存到文件中,文件是一个个字节序列.所以必须把数据额转换为字节序列,输出到文件, ...

  10. fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...

    点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...

最新文章

  1. 百炼智百炼智能获5000万元Pre-A轮融资,深耕智能获客赛道
  2. Mycat实现读写分离
  3. pandas使用query函数和sample函数、使用query函数筛选dataframe中的特定数据行并使用sample函数获取指定个数的随机抽样数据
  4. 网络工程师技能图谱,这些你都会吗?
  5. es6 --- 自制迭代器
  6. 找单词(母函数问题)
  7. Vue笔记大融合总结
  8. Java中反射获取成员变量、构造方法、成员方法及类名
  9. 富人为什么赚钱这么容易
  10. Java 重写(Override)与重载(Overload)区别
  11. 15针VGA公头焊接示意图
  12. 如何使用Bootbox ?
  13. 代码比较工具——DiffMerge的安装教程
  14. 使用d3.js绘制曲线图
  15. 怎样预防电脑辐射脱发
  16. 最新安卓官方api文档完整版
  17. html+js将文本和图片保存(下载)到本地技术
  18. 机器的崛起:隐藏的控制论历史(二)
  19. 【pyqt5】实现选择文件界面
  20. 5.23 QQ音乐数据源(新)抓取完整步骤

热门文章

  1. 【裂缝识别】基于matlab GUI无人机裂缝图像处理系统(带面板)【含Matlab源码 1727期】
  2. 【静脉检测】基于matlab手指静脉图像检测【含Matlab源码 1654期】
  3. 【图像计数】基于matlab灰度二值化同类物体简单计数【含Matlab源码 759期】
  4. 【图像几何】基于matlab GUI图像几何运算系统【含Matlab源码 206期】
  5. SPSS 问卷与量表的区别及联系【SPSS 030期】
  6. php 判断是否在线,关于判断用户是否在线的问题!!!
  7. 计算机网络—3网络层(IP地址及分类、子网掩码及划分子网)
  8. 捡到iphone6怎么解锁_赛博朋克2077前期手枪用哪个好?2077节制结局及银杯节制解锁条件...
  9. matlab平滑图像轮廓,Matlab 画平滑轮廓 print 高质量 figure
  10. 安庆师范大学计算机学院书记,安庆师范大学计算机与信息学院导师教师师资介绍简介-施赵媛...