当前位置:首页 > 开发 > Web前端 > 前端 > 正文

java枚举序列化问题

发表于: 2014-12-13   作者:bingyingao   来源:转载   浏览:
摘要: 对象在网络中传输离不开序列化和反序列化。而如果序列化的对象中有枚举值就要特别注意一些发布兼容问题: 1.加一个枚举值 新机器代码读分布式缓存中老对象,没有问题,不会抛异常。 老机器代码读分布式缓存中新对像,反序列化会中断,所以在所有机器发布完成之前要避免出现新对象,或者提前让老机器拥有新增枚举的jar。 2.删一个枚举值 新机器代码读分布式缓存中老对象,反序列
对象在网络中传输离不开序列化和反序列化。而如果序列化的对象中有枚举值就要特别注意一些发布兼容问题:

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

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




2.删一个枚举值

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


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

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

java枚举序列化问题

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
██ 在分布式应用中,通常会以RMI协议作为分布式服务的对象传输协议,在不同服务器之间传输对象之
枚举就是规定好了指定的取值范围,所有的内容只能从指定的范围中取得。使用简单类完成颜色的固定取
本文内容按如下方式组织: 第一部分给出了序列化和反序列化的定义,以及其在通讯协议中所处的位置;
原文出处:http://www.ibm.com/developerworks/cn/java/j-lo-serial/ 引言 将 Java 对象序列化为二
基本概念: 序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流
题目: 背景: 星期六给我班X姐布置了个集合方面的两个简单的题目,虽然布置了自己也没去看,她做的
java序列化与反序列化 java序列化与反序列化的目的是:存储和重新恢复建立Java对象。序列化可以使Ja
枚举是限定有限可能值的一种手段,使用枚举可以降低程序出错的几率,并可以提高代码的可读性与可维
枚举是限定有限可能值的一种手段,使用枚举可以降低程序出错的几率,并可以提高代码的可读性与可维
序列化 ID 问题 情境:两个客户端 A 和 B 试图通过网络传递对象数据,A 端将对象 C 序列化为二进制
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号