文章目录

  • 序列化的概念
  • Serializable 的作用
  • 序列化的作用
  • 总结
  • 举例


序列化的概念

在程序中为了能直接以 Java 对象的形式进行保存,然后再重新得到该 Java 对象,这就需要序列化能力。序列化其实可以看成是一种机制,按照一定的格式将 Java 对象的某状态转成介质可接受的形式,以方便存储或传输。其实想想就大致清楚基本流程,序列化时将 Java 对象相关的类信息、属性及属性值等等保存起来,反序列化时再根据这些信息构建出 Java 对象。而过程可能涉及到其他对象的引用,所以这里引用的对象的相关信息也要参与序列化

Serializable 的作用

  1. 存储对象在存储介质中,以便在下次使用的时候,可以很快捷的重建一个副本
  2. 便于数据传输,尤其是在远程调用的时候

Serializable接口是 启用其序列化功能的接口。实现java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能使它们的任意状态被序列化或逆序列化

序列化的过程,就是一个“freeze”的过程,它将一个对象freeze(冷冻)住,然后进行存储,等到再次需要的时候,再将这个对象de-freeze就可以立即使用。

我们以为的没有进行序列化,其实是在声明的各个不同变量的时候,由具体的数据类型帮助我们实现了序列化操作。

如果有人打开过Serializable接口的源码,就会发现,这个接口其实是个空接口,那么这个序列化操作,到底是由谁去实现了呢?其实,看一下接口的注释说明就知道,当我们让实体类实现Serializable接口时,其实是在告诉JVM此类可被序列化,可被默认的序列化机制序列化

android序列化插件 序列化serializable_Serializable

所谓的Serializable,就是java提供的通用数据保存和读取的接口。任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中


序列化的作用

序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据

总结

  1. 如果有其他的服务 A服务 远程调用 B服务的 javaBean对象数据,需要通过网络转换成二进制进行传输,那么就需要实现Serializable序列化接口
  2. 如果在一个微服务项目中,没有其他微服务调用本模块的JavaBean对象 , 那么就不需要实现Serializable序列化接口,因为数据传输主要是通过 @ResponseBody 转换成Json字符串的格式在网络上进行传输
  3. 是否实现 Serializable 序列化接口,主要是根据你 是否需要在网络上直接传递JavaBean对象, 如果需要那么就必须实现 Serializable 序列化接口,如果传输的是JavaBean对象里的值,那么就不需要实现 Serializable 序列化接口,转成Json格式的字符串即可

举例

如果还有不太清楚的小伙伴,那么建议全部实现 Serializable
写上一定不会错,不写有可能会出错