我们在做项目过程中,为什么类要实现Serializable

本文详细介绍了Java中对象序列化的三个主要原因:状态保存以便后续重建相同副本、对象在网络间传输的需求以及serialVersionUID在序列化过程中的作用。文章还解释了serialVersionUID如何确保对象在不同版本间的兼容性和唯一性。
最主要的原因:

1:将对象的状态保存在存储媒体中,便于在以后重新创建出完全相同的副本。

2:将对象从一个应用程序发送到另外一个应用程序

实现Serializable接口的作用就是就是可以序列化,把对象存到字节流,然后可以恢复(Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那个对象了。这一点甚至在跨网络的环境下也是如此,这就意味着序列化机制能自动补偿操作系统方面的差异。也就是说,你可以在Windows机器上创键一个对象,序列化之后,再通过网络传到Unix机器上,然后在那里进行重建。你不用担心在不同的平台上数据是怎样表示的,byte顺序怎样,或者别的什么细节),所以如果你的对象没有实现序列化,怎么才能进行网络传输呢?要想网络传输就需要转化为字节流,所以在我们分布式项目中,就需要实现序列化,如果不需要分布式应用,就可以不用实现序列化。

3:

关于serialVersionUID的解释

serialVersionUID作用: 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。

你可以随便写一个,在Eclipse中它替你生成一个,有两种生成方式: 一个是默认的1L,比如:private static final long serialVersionUID = 1L;

一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,

比如:private static final long serialVersionUID = -8940196742313994740L;之类的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值