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

最主要的原因:

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;之类的。

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