Hi All,
Following is the mock question at the end of chapter 6 from K & B Book.
import java.io.*;
public class TestSer {
public static void main(
String[] args) {
SpecialSerial s = new SpecialSerial();
try {
ObjectOutputStream os = new ObjectOutputStream(
new FileOutputStream("myFile"));
os.writeObject(s); os.close();
System.out.print(++s.z + " ");
ObjectInputStream is = new ObjectInputStream(
new FileInputStream("myFile"));
SpecialSerial s2 = (SpecialSerial)is.readObject();
is.close();
System.out.println(s2.y + " " + s2.z);
} catch (Exception x) {System.out.println("exc"); }
}
}
class SpecialSerial implements Serializable {
transient int y = 7;
static int z = 9;
}
Which are true? (Choose all that apply.)
A. Compilation fails.
B. The output is 10 0 9
C. The output is 10 0 10
D. The output is 10 7 9
E. The output is 10 7 10
F. In order to alter the standard deserialization process you would override the readObject()
method in SpecialSerial.
G. In order to alter the standard deserialization process you would override the defaultReadObject() method in SpecialSerial
Answer is
C and F are correct. C is correct because static and transient variables are not serialized when an object is serialized. F is a valid statement.
I am confused if C is correct then why F is also correct please help