Java 序列化的认识

最近在团队内部发现了一些容易被人们忽视的问题,就是对象的序列化问题。
1.Non Serializable Object
你们有谁去考虑过为什么我们的模型都需要去实现Serializable 接口,大家都应该知道Memcached缓存对象时要求类对需实现 Serializable 这个接口,但最近在项目当中我发现了常常报这么一个异常Non Serializable Object ,大致分析了一下原因是有人把非序列化对象扔到Memcached中导致了这到一个异常。难道这不是一个错误吗?
2.Non-transient non-serializable instance field in Serializable class
这是一个坏味道,意思是在序列化的类中有非序列化的对象,并且没有对非序列化对象标注Transient ,这样做的后果是这个类的实列不能被序列化。
           3. 不重视序列号

  我常在代码中发现是这样写的,也就是序列化的能力从BaseDomain中继承,但没有加入序列号,实际上序列号是非常有用的,大家想想我们的产品都有版本号,为什么模型却没有?在一个异构的系统当中如果各个系统之间传递消息是用序列化,那么版本号是必不可少的,而且每一次模型变更都要做序列号升级,这样其他系统拿到数据发现序列号不一样,那么其他系统就要考虑升级了,实际上序列化的应用场景还有很多。

猜你喜欢

转载自qnlpkuge.iteye.com/blog/1264004
今日推荐