2010-11-07 6 views

Répondre

22

defaultReadObject() appelle le mécanisme de désérialisation par défaut et est utilisé lorsque vous définissez la méthode readObject() sur votre classe Serializable. En d'autres termes, lorsque vous avez une logique de désérialisation personnalisée, vous pouvez toujours revenir à la sérialisation par défaut, qui désérialisera vos champs non statiques et non transitoires. Par exemple:

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(); 
    } 
] 

D'autre part, readObject() est utilisé lorsque vous créez le ObjectInputStream, à l'extérieur de l'objet désérialisé, et que vous voulez lire un objet qui a déjà été publié en feuilleton:

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

Comment arrêter readObject levant l'exception EOF? –

+0

@Aizaz vous ne pouvez pas. Attrape-le. – Bozho