Java序列化讲解

本文详细介绍了Java中对象序列化的两种方式:序列化和外部序列化。探讨了序列化的实现方式、特点、优缺点,以及在何种情况下使用序列化。同时,文章还解释了反序列化过程中的serialVersionUID的作用。

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

Java提供了两种对象实例化的方式:①序列化②外部序列化

一、序列化

实现方式: 通过实现Serializable接口实现对象的序列化。

序列化特点:(重点)

  • ①如果一个类被序列化,那么它的子类也能够被序列化。
  • ②由于static代表类的成员,transient代表对象的临时数据,因此被声明为这两种类型的数据成员是不能被序列化的。

序列化的优缺点:

优点:序列化可以将对象的状态写在流里进行网络传输,或是保存到文件、数据库中,并在需要时可以把该流读取出来重新构造一个相同的对象。

缺点:影响系统的性能,如果不是需要要使用序列化,尽量不要使用序列化。

什么情况下使用序列化?

  • 1)需要通过网络来发送对象,或对象的状态需要被持久化到数据库或文件中。
  • 2)序列化能实现深度复制,即可以复制引用的对象。

与序列化相对的就是反序列化,反序列化过程中,serialVersionUID起着非常重要的作用,每个类都有一个特定的serialVersionUID,在反序列化过程中,通过该参数判定类的兼容性。如果不一致将出现异常。

二、外部序列化

外部序列化接口定义如下:

public interface Externalizable extends Serializable{

        void readExternal( ObjectInput in);

        void writeExternal( ObjectOutput out);

}

就是自己实现接口中的读写方法,这种方式难度大,在编程时有更好的灵活性,对需要持久化的那些属性可以进行控制,可能会提高性能。

暂时不去掌握吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AndyAtcsdn

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

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

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

打赏作者

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

抵扣说明:

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

余额充值