yyz要学java
2018-06-05 00:24
如图所示
下面是老师写的 上面是我写的
不是说实现了序列化接口的类的构造函数不会被调用吗
问题原因:
//由于你的代码多了下面这一行 Bar2 bar2 = new Bar2(); //新建一个Bar2对象。调用new方法时,程序会自动调用Bar2的构造方法 //你控制台多出那一行bar2,就是这个Bar2的构造方法输出的
解决方法:
//注释掉或者直接删除下面这行代码可以得到和老师同样的结果 //Bar2 bar2 = new Bar2(); //该程序是为了测试反序列化得到对象是否调用其构造方法 //因此重新新建一个Bar2的实体对象是完全没有必要的,反而会混淆测试结果
既然新建了一个Bar2的对象,执行构造方法时,为什么不依次输出Bar Bar1 Bar2,而是只输出了bar2呢?
这个还真没有 如果同时进行的话好像会报错的
你是不是同时进行序列化和反序列化?这样是不行的,要先进行序列化时把反序列化注释掉,进行反序列化时把序列化注释掉。因为在序列化时会对子类进行实例化,然后会调用子类和父类的所有构造方法,在进行反序列化时如果不将序列化注释掉你就分不清构造函数到底是实例化时打印的还是序列化接口类调用的,希望对你有帮助
文件传输基础——Java IO流
133754 学习 · 1030 问题
相似问题