Comment les constructeurs sont-ils appelés pendant la sérialisation et la désérialisation ?
-
Quand il y a une classe qui implémente le sérielizable ?
-
Quand il y a une relation parent/enfant et que seul l'enfant implémente le sérielizable ?
-
Lorsqu'il y a une relation parent/enfant et que le parent et l'enfant implémentent tous deux le sérielizable ?
À mon avis, la réponse à votre question est :
1) Si une classe implémente la sérialisation et que seule cette classe existe, il n'y a pas de classe mère. Le flux du constructeur est comme un constructeur par défaut qui sera appelé par la classe parente qui n'a pas mis en œuvre la sérialisation. Dans ce cas, il s'agit de la classe Object. Ainsi, le constructeur sans argument de la classe Object sera exécuté et créera un objet factice et, en appelant readObject(), le champ sera défini par réflexion et les données seront enregistrées dans la mémoire ou le fichier.
2) si seul l'enfant implémente le sérielizable alors le flux ira jusqu'à la classe de base qui n'est pas sérielizable. si la classe de base dierect n'est pas sérielized alors (cette classe devrait avoir le constructeur de NO-Arg) le constructeur de NO-Arg fonctionnera pour la classe de base dans ce cas.
3) si tous les parents sont sérialisés, le flux ira vers la classe Object et le constructeur No-Arg sera exécuté de la classe Object.
Note : Mais vous pouvez sérialiser en implémentant l'interface externalisable alors le constructeur par défaut (NO-ARG) sera appelé de cette classe seulement et non de la classe parent lors du processus de désérialisation.