TLDR: Existe-t-il un moyen de forcer une sous-classe à avoir un constructeur vide quand le super ne le fait pas?Sérialisable en prolongeant avec le constructeur vide?
Je dois être pour initialiser une classe non sérialisable, TravelTimeDataArray
, à partir d'un conteneur de données sérialisé. Le TravelTimeDataArray
ne peut pas être sérialisé car il n'implémente pas l'interface Serializable, ne dispose pas d'un constructeur vide et utilise un champ non sérialisable de type Link
. Ma première pensée a été de l'étendre en tant que classe sérialisable. Au lieu d'utiliser un Link
, je peux utiliser une chaîne sérialisable de son attribut ID et ajouter le constructeur vide. Puisque le super n'a pas de constructeur vide, j'obtiens une erreur avec le constructeur vide de la sous-classe. Existe-t-il un moyen de forcer une sous-classe à avoir un constructeur vide quand le super ne le fait pas?
Vous n'avez pas besoin d'un constructeur vide dans la classe Serializable. – EJP
Je sais. J'espérais que nous pourrions en quelque sorte surcharger le constructeur par défaut du super pour utiliser le constructeur vide de la sous-classe et rendre ainsi la sous-classe sérialisable. – andrew
Cela n'a pas de sens. Un constructeur généré par défaut * utilisera * le constructeur par défaut de la classe de base; personne n'appellera le constructeur par défaut d'une classe sérialisable pendant la désérialisation; et la classe de base n'a * pas * un constructeur par défaut, * qui est le problème réel. * Vous devez prendre du recul et réfléchir. – EJP