对象序列化是将对象转换为静态有序的字节流的过程,因此该对象可以用于传输或持久化。反序列化是该过程的反向操作,即将字节流转换为 Java 对象。Java 对象实现 java.io.Serializable 该接口后,就能实现序列化和反序列化。序列化在远程调用中非常常见。
暴露实体
定义 member 实体如下:
@Data public class Mbr implements java.io.Serializable { private Long id; private String name; private String age; }
我们在实践中,可能会遇到不定义 dto 对象,直接在接口中暴露实体对象 create(Mbr mbr)
, update(Mbr mbr)
的情况,这时实体对象必须实现 java.io.Serializable
接口。
当实体实现了 java.io.Serializable
接口后,所有继承它的实体也能被序列化。如果实体里引用了其它对象,那么被引用的对象也应该可以序列化。
@Data public class Mbr implements java.io.Serializable { private Long id; private String name; private String age; // Address 应该也实现 java.io.Serializable 接口 private Address address; }
serialVersionUID
@Data public class Mbr implements java.io.Serializable { private static final