Java 对象实现 Serializable 的原因

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值