Java Serializable、Externalizable实现序列化、反序列化-实例-static、transient修饰的变量不会被序列化

本文介绍了Java中对象序列化和反序列化的重要性,特别是Serializable和Externalizable接口的区别。实现Serializable接口的对象在序列化时会忽略static和transient修饰的变量。实现Externalizable接口则需要手动编写writeExternal和readExternal方法,且必须提供无参构造函数。文章通过实例展示了如何序列化和反序列化,并解释了transient关键字的作用:防止变量被序列化。

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

在JAVA中,对象的序列化和反序列化被广泛的应用到RMI(远程方法调用)及网络传输中。

实现Serializable接口 和实现Externalizable接口实现序列化、反序列化的区别:

1 类实现Serializable接口不用实现方法;类实现Externalizable接口需要实现writeExternal,readExternal方法,不然反序列后的对象不含有属性值,都是默认的初始值

2 类实现Serializable接口时无参构造函数和带参构造函数可以同时写,也可以不同时写(只写一个或都不写均可);类实现Externalizable接口时如果写了带参构造函数,则必须要写无参构造函数,不然报错

3 如果不实现Serializable 则 报错Exception in thread "main" java.io.NotSerializableException: 类路径和类名

4 无static修饰是对象属性,只用transient修饰,不序列化,反序列化后是默认值
5 有static修饰是类属性,不序列化,反序列化后是最新值
6 有static、transient同时修饰时,仍然是当作类属性处理

transient变量不会贯穿对象的序列化和反序列化,生命周期仅存于调用者的内存中而不会写到磁盘里进行持久化。

---------------------------

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十六画生的博客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值