Bonjour,

J'ai une classe A qui contient en autres un HashSet<A> faisant références à d'autres éléments de type A liés à A.

public Class A {
HashSet<A> elements;

public A {
this.elements = new HashSet<A>()
}

Ailleurs dans le code j'ajoute des éléments à A via une méthode A.add(A e).
Tous les objets de type A sont rassemblés dans une Collection dans un objet de classe C. Une fois le chargement terminé, je sérialise(*) l'objet collection pour transmettre à une autre application via un fichier binaire par exemple - ça serait long à détailler.

A la lecture et désérialisation, une null java exception se produit, notamment si j'ai au chargement j'ai eu des références croisées, a.add(e) puis plus loin e.add(A).

Est-ce que l'erreur vient du fait que e n'existe pas à la création de a lors de la désérialisation? Si au lieu de stocker les objets de type A je stocke des Integer, il n'y a pas de problème.

(*) sérialisation:
C collec;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutput oo = new ObjectOutputStream(baos);
oo.writeObject(collec);
oo.close();

(**) désérialisation
Property serializedObject = props.getByName(GraphName);
ByteArrayInputStream bais = new ByteArrayInputStream((byte[]) serializedObject.getValue().get(Type.ByteArray) );
ObjectInput oi = new ObjectInputStream(bais);
Collec = (C)oi.readObject();

Merci de vos réponses,
Pierre