Pich Blog

关注移动开发,大数据,云计算,软件架构!

4.IPC基础之Serializable

概述

他是Java提供的一个序列化接口,他是一个标记接口(空接口),为对象提供标准的序列化和反序列化操作。使用它非常简单,只需要在类中定义一个静态表示ID,在实现一个Serializable接口,甚至可以不申明UID,如果不声明这个ID,可能对反序列化产生影响。

测试Bean

那如何序列化和反序列化这个User对象呢?

对象序列和反序列

虽然user和newUser的内容一样,但他们是两个对象。

具体的可以查看[详解Java序列化之Serializable。

SerialVersionUID作用

我们发现即使不指定UID也能序列化,那他到底有啥用。

他的详细工作机制是这样的:

序列化的时候讲这个ID写到序列化文件,在反序列化的时候比较这两个ID,如果相同才能反序列化成功。如果不同就会报错。

一般来说应该手动指定,当结构变了,需要更改这个值。

也可以让Eclipse根据当前类的结构自动生成他的Hash值。

如果不指定值,反序列化的时候也会自定计算当前类的Hash值,如果和序列化文件中的Hash值不一样,也会序列化失败。

自定义序列化

系统的序列化是可以改变的,可以通过重写下面两个方法。具体的可以看Java序列化相关章节。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注