关于序列化的情况分析

java的“对象序列化”能将一个实现了Serilizable接口的对象转换成一组byte,日后要用这个对象的时候,能把这些byte数据恢复出来,并据此重构那个对象。在跨网络环境下也是如此,序列化具有跨平台性。

之所以加入对象序列化是要用它来实现两个重要功能java远程方法调用(RMI,Remote Method Invocation)能像调用自己机器上的对象那样去调用其他机器上的对象。当向远程对象传递消息的时候,就需要通过对象序列化来传送参数和返回值。对javaBean来说,Bean的状态信息通常是在设计时配置的,这些状态信息必须保存起来,供程序启动时用。对象序列化就是负责这些工作的。

要序列化对象,必须先创建一个OutputStream,然后把它嵌进ObjectOutputStream。用writeObject()方法把对象写入OutputStream。读的时候,把InputStream嵌到ObjectInputStream里,然后再调用readObject()方法,得到一个Object的引用,根据需要进行类型转换。

对象序列化不仅能保存对象的副本,还会把它引用的对象也保存起来,然后再继续跟踪那些对象的引用。涵盖的范围不仅包括对象的成员数据,而且包含数组里的引用。(这个是自动进行的,不需要我们编写代码)

序列化能实现轻量级的persistence。(persisitence是指,对象的生命周期不是由程序是否运行决定,在程序的两次调用之间对象仍然还活着)通过将序列化处理的对象写入磁盘,等到程序再次运行的时候再把它读出来,可以达到persistence的效果,之所以是“轻量级”是因为不能用像“persistent”这样的关键词来直接定义一个对象,然后让系统处理所有的细节。相反,必须明确进行序列化和解序列化(desierialize)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值