java.io.Serializable 序列化问题

Person.java

package a.b.c;public class Person implements java.io.Serializable{//    private static final long serialVersionUID = 2481632967198330813L;
    String field1;String field2;String field3;public String getField1() {return field1;}public void setField1(String field1) {this.field1 = field1;}public String getField2() {return field2;}public void setField2(String field2) {this.field2 = field2;}public String getField3() {return field3;}public void setField3(String field3) {this.field3 = field3;}}

View Code

Student.java   Student继承自Person,但为了清晰表示,按Person一模一样又覆盖了一遍

package a.b.c;public class Student  extends Person implements java.io.Serializable {//    private static final long serialVersionUID = 2481632967198330813L;
    String field1;String field2;String field3;public String getField1() {return field1;}public void setField1(String field1) {this.field1 = field1;}public String getField2() {return field2;}public void setField2(String field2) {this.field2 = field2;}public String getField3() {return field3;}public void setField3(String field3) {this.field3 = field3;}}

View Code

SerializableWriter.java

package a.b.c;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;public class SerializableWriter {public static void main(String[] args) throws Exception{write();}public static void write() throws Exception{Student stu= new Student();stu.setField1("aaa111");stu.setField2("bbb222");ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("C:/Users/King/Desktop/jx.txt"));objectOutputStream.writeObject(stu);objectOutputStream.flush();objectOutputStream.close();}}

SerializableReader.java

package a.b.c;import java.io.FileInputStream;
import java.io.ObjectInputStream;public class SerializableReader {public static void main(String[] args) throws Exception{read();}public static void read() throws Exception{ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("C:/Users/King/Desktop/jx.txt"));Object obj=objectInputStream.readObject();Person person=(Person)obj;System.out.println(person.getField1());System.out.println(person.getField2());objectInputStream.close();}}

打印结果

aaa111
bbb222

总结

  • 只要版本号一致,且Student就算删掉field3的属性和方法,仍旧可以把序列化后的Student反序列化成Student.
  • 只要版本号一致,且Student  继承自父类 Person,那么就可以把序列化后的Student反序列化成Person.

自己项目经历:

esb_new.jar包中的head多加了一个password属性(这个场景是说添加属性的那个包就是新包)

然后生产上 核心 通过http连接 ESB(esb_old.jar) 去调用 电销(esb_new.jar)回调接口 ,报序列号版本不一致问题, 因为电销提供的回调接口是Spring Invoke远程方法调用,需要依赖请求对象RequestBusinessObjVo,在转对象时会用到序列化头部信息,此时旧包(esb_old.jar)丢了新包(esb_new.jar)需要的属性,所以旧包不能调新包.

但是电销(esb_new.jar)通过http连接 ESB(esb_old.jar)去调代理平台(esb_old.jar) 没报错. 是因为 电销 和ESB是http通信的,而ESB和代理平台此时通过Spring Invoke远程方法调用,仍旧用的是esb_old.jar包所以没有报序列号问号.

转载于:https://www.cnblogs.com/whatlonelytear/p/5512730.html

java.io.Serializable 序列化问题【原】相关推荐

  1. java对象序列化java.io.Serializable 接口实践

    java.io.Serializable 接口没有任何方法和字段,仅仅表示实现它的类的对象可以被序列化.实现了这个接口的所有类及其子类都可以对象序列化. 序列化前,虚拟机要清楚每个对象的结构,所以序列 ...

  2. Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释【转】

    转载自:https://blog.csdn.net/qq_27093465/article/details/78544505 遇到这个 Java Serializable 序列化这个接口,我们可能会有 ...

  3. Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释

    遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题 a,什么叫序列化和反序列化 b,作用.为啥要实现这个 Serializable 接口,也就是为啥要序列化 c,se ...

  4. Java 之 Serializable 序列化和反序列化的概念,作用的通俗的解释

    1.序列化和反序列化的疑问 遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题 a,什么叫序列化和反序列化 b,作用.为啥要实现这个 Serializable 接口, ...

  5. 解决Serialized class ** must implement java.io.Serializable问题

    在使用dubbo进行传递实体类时,会报错需要实现序列化问题 只需在自己的model实体类里面implements Serializable即可解决,如下 package com.pang.back.M ...

  6. Serialized class com.xxx.xxxService must implement java.io.Serializable

    大家好,我是烤鸭: 使用dubbo的时候,遇到如下的问题.     Serialized class com.xxx.xxxService must implement java.io.Seriali ...

  7. dubbo 报错Serialized class com.spring.boot.entity.User must implement java.io.Serializable

    这个报错是说dubbo在传输数据的时候反序列化报错, 使用dubbo进行数据传递时,需让作为消息传递的类序列化. 2019-03-26 16:45:01.228 ERROR 14968 --- [ni ...

  8. Dubbo Serialized class xxx.Xxx must implement java.io.Serializable问题解决

    问题描述: Caused by: java.lang.IllegalStateException: Serialized class com.user.UserDto must implement j ...

  9. 错误记录——Serialized class com.cql.entity.Teacher must implement java.io.Serializable

    在使用dubbo的时候,出现Serialized class com.*.xxx must implement java.io.Serializable,的一个错误 原因:实体类未进行序列化,在对应的 ...

最新文章

  1. 构建前瞻性应用架构的优秀实践
  2. 基于 Go 语言构建企业级的 RESTful API 服务
  3. python pandas 遍历 DataFrame
  4. 手把手教你使用 Python 制作贪吃蛇游戏
  5. c语言奇偶判断程序,求助 奇偶校验的C语言编程
  6. 活动报名 | “认知神经科学”助力人工智能突围的方法路径
  7. Spark出现java.lang.stackoverflowerror的解决方法
  8. linux tf命令,Linux系统命令介绍之vmstat命令详解
  9. 快速识别Hash加密方式hashid
  10. 毕业后两三月的本科毕业生,他们都怎么样了
  11. LeetCode 293. 翻转游戏
  12. SAP License:SAP合同类型的使用
  13. 如何在SQL中对行进行动态编号
  14. Shell脚本学习-阶段三
  15. 售票统计表表格模板_财务常用四大报表模板,共二十张,会计小白入职有它被高看一眼...
  16. Quartz.net在线Cron表达式解析工具
  17. 测量学5_测量误差理论的基本知识
  18. python里的def方法中->代表什么意思
  19. ECSHOP微信支付插件ECSmart手机版,ECSmart微信支付手机版
  20. Era of nostalgia?(怀旧时代的到来?)

热门文章

  1. OpenGL(二)——OpenGL图形绘制
  2. gitblit无法启动服务
  3. 取消对 null 指针“l”的引用。_彻底理解链表中为何使用二级指针或者一级指针的引用...
  4. 【kafka】kafka topic某些分区 副本落后leader太多
  5. 【Elasticsearch】ElasticSearch 7.8 多字段权重排序
  6. 【java】Java内省Introspector
  7. java.io.NotSerializableException: com.codahale.metrics.MetricRegistry
  8. Spring-Jpa : @MappedSuperclass的作用
  9. 【JVM】 讲的比较好的JVM博客连接
  10. 【安全-相关】kerberos hadoop Login failure for hadoop/localhost@YOUNG.COM from keytab