Lors de la désérialisation, les phases d'initialisation ne sont pas effectuées et les attributs déclarés transient prennent leur valeur par défaut (par là je veux dire quand ils ne sont pas initialisés) ; par exemple un
int vaudra 0, un
boolean vaudra
false et un Object (ce qui est ton cas) vaudra
null.
La seule solution à ton problème est d'implémenter la méthode readObject() afin d'initialiser ta List ; cependant pour cela ta List ne doit pas être
final.
Est-il vraiment nécessaire que tu la déclare
final ? Etant donné quelle est
private (et qu'elle ne risque donc pas d'être modifiée par une classe fille ou autre) je ne vois pas trop l'intérêt du
final.
Sans déclarer ta List
final et en implémentant la méthode readObject() cela donnerait : ...
PS : pense à fermer tes fluxs dans un bloc try/finally
Partager