IO流——(17) Serializable

本文深入探讨了Java中Serializable接口的作用,特别是序列化ID(serialVersionUID)的重要性。解释了如何通过固定序列化ID来避免因类结构变化导致的反序列化异常,以及序列化在Web开发中的应用。

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

Serializable:用于给被序列化的类加入ID号。 用于判断类和对象是否是同一个版本。 

在序列化与反序列化过程中,只要当尸体有任何变动,包括字段权限、字段数量发生改变,Java都会改变本地序列化类的ID版本。这种改变算法是自动进行的。

在对象序列化完成以后:

权限改变

    public   String name;
    private  int age;

再次进行反序列化:

异常发生

查看API查到该异常:

就是因为我改变了权限生成了一个新的ID存于本地,与反序列化后生成的obj.object中的ID不匹配导致的异常。

 

当然我们也可以显示的声明该ID,就可以固定这个ID了。

/**
     * ID字段随意定义
     */
    private static final long serialVersionUID = 1515151;

Serializable序号ID在Web开发中常见。

在Web开发中服务器对对象进行临时本地存储,当服务器奔溃时,重启服务器,读取硬盘数据,恢复会话数据。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

真香号

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

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

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

打赏作者

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

抵扣说明:

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

余额充值