Serializable中serialVersionUID的作用

在<Android开发艺术探索>中,讲到了一直困扰我的进程间通讯问题.其中,将类序列化,之后在另一进程中反序列化的方法令人印象深刻.现做笔记,加深记忆.


在Android中,如果一个类实现了Serializable接口,就可以实现类的序列化(保存为本地文件,或者通过网络传输).

而类中的serialVersionUID,是区别类的版本的依据.可以手动设置,也可以由java根据类中的属性自动生成.

例子(全程手输,不保证正确性):

类:

public class Bean implements Serializable {

	private static final long serialVersionUID = 1234567890L;

	public String param1 = "";
	public int param2 = 1;
	public boolean param3 = true;
	...
}


实现序列化:

// 序列化
Bean bean = new Bean();
bean.param1 = "test";
bean.param2 = 0;
...
ObjectOutputStream oStream = new ObjectOutputStream(new FileOutputStream("test.txt"));
oStream.writeObject(bean);
oStream.close;
// 反序列化
ObjectInputStream iStream = new ObjectOutputStream(new FileInputStream("test.txt"));
Bean bean1 = (Bean)iStream.readObject();
iStream.close;


其中,如果serialVersionUID发生变化的话,inputStream.readObject()会抛InvalidClassException.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值