对象序列化是将对象转换为静态有序的字节流的过程,因此该对象可以用于传输或持久化。反序列化是该过程的反向操作,即将字节流转换为 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

对象序列化是将Java对象转换为字节流的过程,便于传输和持久化。文章探讨了为何Java对象需要实现Serializable接口,尤其是在接口中直接暴露实体时的必要性。同时,介绍了serialVersionUID的作用,它是序列化版本标识,用于在反序列化时验证对象的一致性。如果版本号不匹配,JVM会抛出InvalidClassException。
最低0.47元/天 解锁文章
632

被折叠的 条评论
为什么被折叠?



