core java том II, глава II говорит, что в отличие от readObject / writeObject, readExternal / writeExternal способны сохранять и восстанавливать данные, включая суперкласс.Я только что провел эксперимент, и кажется, что readObject / writeObject может выполнять ту же работу:
class base implements Serializable{
protected String field = "xyz";
}
class c1 extends base implements Serializable {
private String name = "name";
private int age = 12;
private void readObject(ObjectInputStream ois) {
System.out.println("readObject!!");
try {
field = (String) ois.readObject();
name = (String) ois.readObject();
age = ois.readInt();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void writeObject(ObjectOutputStream oos) {
System.out.println("writeObject!!");
try {
oos.writeObject(field);
oos.writeObject(name);
oos.writeInt(age);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Мой вопрос: когда нам нужно использовать readExternal / writeExternal ()?Я не вижу никакой работы, которую readExternal / writeExternal могла бы выполнить, а readObject / writeObject не смогла.
Пожалуйста, помогите уточнить.Большое спасибо.