java枚举序列化问题_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java枚举序列化问题

java枚举序列化问题

 2014/12/13 19:22:30  bingyingao  程序员俱乐部  我要评论(0)
  • 摘要:对象在网络中传输离不开序列化和反序列化。而如果序列化的对象中有枚举值就要特别注意一些发布兼容问题:1.加一个枚举值新机器代码读分布式缓存中老对象,没有问题,不会抛异常。老机器代码读分布式缓存中新对像,反序列化会中断,所以在所有机器发布完成之前要避免出现新对象,或者提前让老机器拥有新增枚举的jar。2.删一个枚举值新机器代码读分布式缓存中老对象,反序列化会中断,这个是最危险的操作。因为在序列化的时候Java仅仅是将枚举对象的name属性输出到结果中,而反序列化的时候则是通过java.lang
  • 标签:Java 问题 枚举 序列化
对象在网络中传输离不开序列化和反序列化。而如果序列化的对象中有枚举值就要特别注意一些发布兼容问题:

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

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




2.删一个枚举值

新机器代码读分布式缓存中老对象,反序列化会中断,这个是最危险的操作。


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

无枚举情况
如果序列化的对象中无枚举,单纯普通属性的删除,只要新代码中未使用到就不会产生异常。
上一篇: NSRange 下一篇: 面试的感触(二)
发表评论
用户名: 匿名