2010-11-07 19 views

Respuesta

22

defaultReadObject() invoca el mecanismo de deserialización predeterminado, y se utiliza cuando define el método readObject() en su clase Serializable. En otras palabras, cuando tiene una lógica de deserialización personalizada, puede volver a la serialización predeterminada, lo que deserializará sus campos no transitorios y no estáticos. Por ejemplo:

public class SomeClass implements Serializable { 
    private String fld1; 
    private int fld2; 
    private transient String fld3; 
    private void readObject(java.io.ObjectInputStream stream) 
     throws IOException, ClassNotFoundException { 
     stream.defaultReadObject(); //fills fld1 and fld2; 
     fld3 = Configuration.getFooConfigValue(); 
    } 
] 

Por otro lado, readObject() se utiliza cuando se crea la ObjectInputStream, externamente desde el objeto deserializado, y desea leer un objeto que fue serializada anteriormente:

ObojectInputStream stream = new ObjectInputStream(aStreamWithASerializedObject); 
Object foo = (Foo) stream.readObject(); 
+0

Cómo detener la excepción de EOF arrojando readObject? –

+0

@Aizaz no puedes. Solo atrapémoslo. – Bozho

Cuestiones relacionadas