sérialisation d’object java readObject / defaultReadObject

Quelle est la différence entre readObject et defaultReadObject dans la classe ObjectInputStream ? Je n’arrive pas à trouver beaucoup d’informations sur la différence.

defaultReadObject() appelle le mécanisme de désérialisation par défaut. Il 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 Ssortingng fld1; private int fld2; private transient Ssortingng fld3; private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); //fills fld1 and fld2; fld3 = Configuration.getFooConfigValue(); } ] 

Par ailleurs, readObject() est utilisé lorsque vous créez ObjectInputStream , en externe à partir de l’object désérialisé, et souhaitez lire un object précédemment sérialisé:

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