[Conception][Serialisation] Interdiction de rendre la superclasse sérialisable
Bonjour,
Je suis face à un problème original : J'ai besoin de sérializer une classe A1 qui hérite de A. Cependant, je n'ai absolument pas le droit de modifier A.
A n'implements pas Serializable et déclare un constructeur ayant 2 arguments de type String.
A1 impléments Serializable et déclare également un constructeur avec deux arguments String , puis super(arg1,arg2).
Je n'ai aucun problème pour la sérialization. Mais lors de la déserialization, j'ai l'erreur suivante :
InvalidClassException : no valid constructor.
Evidemment, j'aurais besoin que A déclare un constructeur sans arguments. Mais ne pouvant pas modifier cette classe, je me retrouve bloqué. Quelqu'un a une idée ?
Merci pour vos réponses, j'avoue ne pas avoir trouvé la solution après une bonne recherche .. vous êtes mon seul espoir Obewan .. :)
Un petit plus d'infos....
Visiblement, il n'y a pas le choix. Il faut bien que ma classe A déclare un constructeur par defaut, selon les spécifs de SUN :
public A(){}
Ceci est du au fait que lors de la désérialisation, l'API doit faire un newInstance() pour l'allocation mémoire qui appel le constructeur pas defaut de la superclasse. Donc pas de constructeur par defaut = pas de serialisation. (La je pleure)
Sauf que je n'ai accès qu'au binaire de A qui n'est pas modifiable. N'y a t il pas un moyen de contourner ce problème ? SVP SVP SVP :)))