课程
/后端开发
/Java
/文件传输基础——Java IO流
如图所示
下面是老师写的 上面是我写的
不是说实现了序列化接口的类的构造函数不会被调用吗
2018-06-05
源自:文件传输基础——Java IO流 6-3
正在回答
问题原因:
//由于你的代码多了下面这一行 Bar2 bar2 = new Bar2(); //新建一个Bar2对象。调用new方法时,程序会自动调用Bar2的构造方法 //你控制台多出那一行bar2,就是这个Bar2的构造方法输出的
解决方法:
//注释掉或者直接删除下面这行代码可以得到和老师同样的结果 //Bar2 bar2 = new Bar2(); //该程序是为了测试反序列化得到对象是否调用其构造方法 //因此重新新建一个Bar2的实体对象是完全没有必要的,反而会混淆测试结果
yyz要学java 提问者
HungerCheung 回复 yyz要学java 提问者
yyz要学java 提问者 回复 HungerCheung
既然新建了一个Bar2的对象,执行构造方法时,为什么不依次输出Bar Bar1 Bar2,而是只输出了bar2呢?
这个还真没有 如果同时进行的话好像会报错的
你是不是同时进行序列化和反序列化?这样是不行的,要先进行序列化时把反序列化注释掉,进行反序列化时把序列化注释掉。因为在序列化时会对子类进行实例化,然后会调用子类和父类的所有构造方法,在进行反序列化时如果不将序列化注释掉你就分不清构造函数到底是实例化时打印的还是序列化接口类调用的,希望对你有帮助
举报
为您介绍IO流的使用,以及对象的序列化和反序列化的内容
2 回答这种方法会出现很多ffffff 是什么原因
2 回答怎么出现异常提示
1 回答最后抛出了个异常不知道是什么原因,运行结果是对的。求解
1 回答为什么会出现异常
3 回答出现异常找不到代码