Java对象为啥要实现Serializable接口?
工作中总是看到实体类实现了Serializable,并且常常还带有一个Long类型的常量,这到底是是干什么的,为什么要实现这个接口,作用是什么?带着这些疑问,开始寻根问底之旅。
问题一:什么是Serializable?
Serializable:序列化,可串行化。在这里我们称之为序列化。
什么是序列化?
无论任何语言底层的IO操作都是通过字节来完成的。
在java面向对象的编程语言中,java中对象是主要数据载体,系统或者说底层是通过i/o流的方式进行数据的传输。
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
通俗的讲 序列化就是将我们的实体类对象转化为可以运行在底层的字节码,反序列化正好相反是将字节码转为对象。
问题二:为什么要序列化?
在实际开发过程中,实体类不去实现这个接口,也可以正常的CURD,为什么要实现序列化接口呢?
Serializable接口 是一个空接口 里面没有任何代码,这种接口可以认为是标识接口,目的在于告诉JVM将此对象进行序列化。
实现序列化接口后,可以通过ObjectOutputStream方法 进行保存到任意位置,因为对象存在内存当中,当服务器停止时,对象消失,实现序列化 可以达到持久保存的目的。