Question 101
Assuming that the serializeBanana2() and the deserializeBanana2()
methods will correctly use Java serialization and given:
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.
Answer: D问题一:我选的是C,不明白为什么还会多一个“1”出来。
问题二:还有,为什么把Line14改为:
14. class Food implements Serializable {Food() { System.out.print(“1”); }后,就会变成是C呢??
谢谢
Assuming that the serializeBanana2() and the deserializeBanana2()
methods will correctly use Java serialization and given:
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.
Answer: D问题一:我选的是C,不明白为什么还会多一个“1”出来。
问题二:还有,为什么把Line14改为:
14. class Food implements Serializable {Food() { System.out.print(“1”); }后,就会变成是C呢??
谢谢
解决方案 »
- 一小段程序,有关异常的问题,请分析?
- 字符串替换的问题
- 在长沙居然买不到(effective java(CN))而华章居然不送货到河西 谁有发个电子版的给我
- 关于jlabel赋值问题
- 在tomcat下怎么配置log文件?
- HibernateOperations saveOrUpdate(entity) 不能触发SQL语句
- 怎样使jar--
- 我想用一个SQL语句来动态生成TREE的项目,请大家给我看一下源程序
- JDBC事务处理
- 求帮助一个双重for循环的算法,是在不知道怎么做
- 一个弱弱的char[]赋值问题,高手请进!
- jsp 出现中文输入乱码 请教各位 另外再问一下hibernate 连接mysql 驱动写法
new Banana2(); 会输出 12,这没有问题。因为Food 并没有实现Serializable接口,而Fruit和Banana2都实现了Serializable接口,所以在序列化的时候,可以将Fruit和Banana2的信息序列化,而 Food 不行。当反序列化回来的时候,就要再走Food() { System.out.print("1");会再输出一个1,所以是D。 具体的LZ请参加API:public interface Serializable类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。要允许不可序列化类的子类型序列化,可以假定该子类型负责保存和恢复超类型的公用 (public)、受保护的 (protected) 和(如果可访问)包 (package) 字段的状态。仅在子类型扩展的类有一个可访问的无参数构造方法来初始化该类的状态时,才可以假定子类型有此职责。如果不是这种情况,则声明一个类为可序列化类是错误的。该错误将在运行时检测到。在反序列化过程中,将使用该类的公用或受保护的无参数构造方法初始化不可序列化类的字段。可序列化的子类必须能够访问无参数构造方法。可序列化子类的字段将从该流中恢复。