java枚举序列化问题

对象在网络中传输离不开序列化和反序列化。而如果序列化的对象中有枚举值就要特别注意一些发布兼容问题:

[b]1.加一个枚举值[/b]
新机器代码读分布式缓存中老对象,没有问题,不会抛异常。

老机器代码读分布式缓存中新对像,反序列化会中断,所以在所有机器发布完成之前要避免出现新对象,或者提前让老机器拥有新增枚举的jar。


[b]

2.删一个枚举值[/b]
新机器代码读分布式缓存中老对象,反序列化会中断,这个是最危险的操作。


因为在序列化的时候Java仅仅是将枚举对象的name属性输出到结果中,而反序列化的时候则是通过java.lang.Enum的valueOf方法来根据名字查找枚举对象,查找不到就直接中断!

[b]无枚举情况[/b]
如果序列化的对象中无枚举,单纯普通属性的删除,只要新代码中未使用到就不会产生异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值