13. import java.io.*;
14. class Food {Food() { System.out.print(”1”); } }
15. class Fruit extends Food implements Serializable {
16. Fruit() { System.out.print(”2”); } }
17. public class Banana2 extends Fruit { int size = 42;
18. public static void main(String [] args) {
19. Banana2 b = new Banana2();
20. b.serializeBanana2(b); // assume correct serialization
21. b = b.deserializeBanana2(b); // assume correct
22. System.out.println(” restored “+ b.size + “ “); }
23. // more Banana2 methods
24. }
What is the result?
A. Compilation fails.
B. 1 restored 42
C. 12 restored 42
D. 121 restored 42
E. 1212 restored 42
F. An exception is thrown at runtime.为什么会出两次12呢??还有20,21行是什么意思呢??可序列化是什么意思??
高手帮我讲解一下~~谢谢
14. class Food {Food() { System.out.print(”1”); } }
15. class Fruit extends Food implements Serializable {
16. Fruit() { System.out.print(”2”); } }
17. public class Banana2 extends Fruit { int size = 42;
18. public static void main(String [] args) {
19. Banana2 b = new Banana2();
20. b.serializeBanana2(b); // assume correct serialization
21. b = b.deserializeBanana2(b); // assume correct
22. System.out.println(” restored “+ b.size + “ “); }
23. // more Banana2 methods
24. }
What is the result?
A. Compilation fails.
B. 1 restored 42
C. 12 restored 42
D. 121 restored 42
E. 1212 restored 42
F. An exception is thrown at runtime.为什么会出两次12呢??还有20,21行是什么意思呢??可序列化是什么意思??
高手帮我讲解一下~~谢谢
解决方案 »
- 帮帮忙!!
- 我说能不能不要再问String创建了几个对象这种蛋疼问题啊?
- 根据手机号码判定是中移动或中联通,或判定是哪个省份的号
- java不是一个可视化的开发环境,界面也要用代码写,我的理解对吗?
- Button问题?
- 请问public void sit(){};这种句型后面那个分号可以写成public void sit(){;}这样吗?或者写成public void sit(){}这样可以吗?
- 怎样将一个文件中的数据分别赋给两个不同的数组??
- 相信很多人都用过jspSmartUpload ,不知道有没有人知道他的源代码...
- 请问考scjp看什么书好?
- 研究生毕业论文 for java 第1篇
- js传值问题
- 谁来帮我讲解一下这道题~~~谢谢
21. b = b.deserializeBanana2(b); // assume correct
你的这两个方法不了解。如果没有这两个方法,输出结果为:12restored42
没看出来那个1是怎么出来的,也许是接口Serializable中定义的方法然后在b.serializeBanana2(b); // assume correct serialization
21. b = b.deserializeBanana2(b); // assume correct 这2段代码中输出了!
20. b.serializeBanana2(b); // assume correct serialization
21. b = b.deserializeBanana2(b); // assume correct
这两条费解..期待正解
14. class Food {Food() { System.out.print(”1”); } }
15. class Fruit extends Food implements Serializable {
16. Fruit() { System.out.print(”2”); } }
17. public class Banana2 extends Fruit { int size = 42;
18. public static void main(String [] args) {
19. Banana2 b = new Banana2(); //创建Banana2对象,此处会执行Food和Fruit的构造函数,所以会输出12
20. b.serializeBanana2(b); // assume correct serialization 序列化
21. b = b.deserializeBanana2(b); // assume correct 此处反序列化,因为Food是Banana2的一个
22. System.out.println(” restored “+ b.size + “ “); }
23. // more Banana2 methods
24. }
19行:创建Banana2对象,此处会执行Food和Fruit的构造函数,所以会输出12
20行:序列化
21行:反序列化
21行:此处反序列化,因为Food是Banana2的一个父类,但其没有实现Serializable接口,要想正确反序列化,它必须得有无参构造函数,反序列化时就会执行这个构造函数。而Food有无参构造函数“Food() { System.out.print(”1”); }”,所以输出1关于序列化和反序列化,介意LZ看书去吧,偶表达能力实在....说不清楚....
序列化的过程呢就是把对象一整个的写入字节流和从字节流中读取对象,而不用单独的把某个属性值什么的一条条写入。玩单机游戏的时候的存档实现的就是这样一个序列化的过程:
把你游戏场景里面的人物山水极品武器等等属性整个以对象的形式存起来,如果你手工编程一条一条写入存档文件的话那就得累死,所以JAVA提供了一个序列化的接口,只要实现了这个接口的类就可以 以对象流的形式整个存取,而不必一条条的写入。
可以参考:
http://publish.it168.com/2005/0819/20050819037201.shtml