
Envoyé par
pducrot
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
Partager