序列化的含义和意义

序列化机制允许将实现序列化的Java对象转换成字节序列,这些字节序列可以保存在 磁盘上,或通过网络传输,以备以后重新恢复成原来的对象。序列化机制使得对象可 以脱离程序的运行而独立存在。 对象的序列化(Serialize)指将一个Java对象写入IO流中,与此对应的是,对象的反 序列化(Deserialize)则指从IO流中恢复该Java对象如果需要让某个对象支持序列化 机制,则必须让它的类是可序列化的(serializable)。
为了让某个类是可序列化的,该类必须实现如下两个接口之一:
Serializable(常用)
ExternalizableJava
很多类已经实现了Serializable,该接口是一个标记接口,实现该接口无须实现任 何方法,它只是表明该类的实例是可序列化的。 所有可能在网络上传输的对象的类都应该是可序列化的,否则程序将会出现异常。
序列化过程:
首先我们创建一个Person名的类,然后封装name和age, 实现Serializable接口。
在这里插入图片描述
Person警告是让我们生成序列ID,直接指上去,可以生成一个默认的,一个随机的,
在这里插入图片描述

第一种是默认的比较简单,第二种是随机的比较长,项目要求没有太高的都用第一种。
在这里插入图片描述

创建名为ObjectStreamDemo的类,
第一步创建实例:
在这里插入图片描述

实例化FileOutputStream和ObjectOutputStream,
在这里插入图片描述

出现异常,直接抛上去。
在这里插入图片描述

把对象序列化,写入文件。关闭ObjectOutputStream。
在这里插入图片描述

运行后是没有结果的。但在文件夹中会新建一个 Person.txt. 打开后都是乱码,一个对象的数据是不可能直接看到的。
在这里插入图片描述

下面我们反序列化 :
实例化FileInputStream 和ObjectInputStream:
在这里插入图片描述

readObject() 可以反序列化对象,定义一个Peron2等于它强制转换,还可能抛一个异常,直接抛上去,然后关闭ObjectInputStream。注意:强制转换的时候包名都必须一致。
在这里插入图片描述

验证:
在这里插入图片描述

反序列化的时候注意:必须要求实现接口,如果不实现接口就会报一个不能序列化的异常。
在这里插入图片描述
注意:当你这个类里面用了其他类,其他的类也必须是可序列化的,否则任然出现以上问题。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值