关于java的序列化问题

写这篇文章的起因是在面试的过程当中,别人曾问到我几个问题。

(1)java如何实现序列化的?

(2)序列化的serialVersionUID有什么作用。

(3)static修饰的变量能够序列化吗?如果不能,那么怎么样自己实现喃?

依次对于上述问题进行解答。

1.如何实现对象序列化。

(1)实现Serializable接口,并不用做任何操作。


其大致规则如上。

(2)实现Externalizable接口,Externalizable接口是继承Serializable接口的。实现了这个接口的话,你需要重写两个方法。


这就可以自定义规则了。

2.serialVersionUID的作用。

如果你不写serialVersionUID的话,那么当你使用流写入文件的时候,系统会自动计算一个serialVersionUID。在将文件读成流的时候就会去确认serialVersionUID是否一致,如果不一致的话就会产生InvalidClassException。产生不一致的原因,可能是你对这个类进行了修改或者扩充。那么这个时候就可以选择自定义一个serialVersionUID,就可以避免版本不同的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值