2012-01-18 15 views
5

La firma per readObject è:ingresso Java serializzazione readObject vs ingresso readExternal

private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException; 

che prende in un riferimento di tipo classe concreta.

La firma per readExternal è:

void readExternal(ObjectInput in) throws IOException, ClassNotFoundException 

che prende in un riferimento di un tipo di interfaccia.

Quindi, perché questa discrepanza? È solo una svista?

risposta

2

ObjectInputStream ha diversi metodi non in ObjectInput che vengono utilizzati specificamente per supportare il meccanismo predefinito di serializzazione. Pertanto, la serializzazione deve provenire da un ObjectInputStream, ma l'esternalizzazione può provenire da qualsiasi ObjectInput.