Comment faire pour forcer les sous-classes pour définir une variable en java?
J'ai une classe qui définit tous les paramètres de base pour un écran. De là, chaque écran de l'application est une sous-classe de cette. J'ai besoin de chaque écran (c'est à dire la sous-classe) pour définir la valeur d'une variable dans sa mise en œuvre (à savoir, chaque écran doit définir ce niveau, il est dans une arborescence de navigation).
Aussi, idéalement, cette variable doit être final
lorsqu'il est défini dans la sous-classes (je me rends compte que ce n'est probablement pas possible).
Quelle est la meilleure façon d'aller à ce sujet? Est-il un moyen pour appliquer correctement ce type de comportement en Java?
Vous devez vous connecter pour publier un commentaire.
@pst commentaire aboutir à cette solution.
De déclarer un
abstract
fonction pour définir ou de retour de la variable, vous pouvez forcer une sous-classe de la mettre en œuvre correctement.Suivant, la fonction doit être appelée par chaque sous-classe de l'extérieur de la classe. Cela implique qu'il doit être fait quelque part à l'extérieur de la classe. Cela peut être fait dans le constructeur sans argument de l'extérieur de la classe sans avoir à se soucier des sous-classes d'appel
super
:Sur cette base, cette solution permettra de tenir en place et correctement force la variable à définir tant que:
Le code:
Superclasse:
Sous-classe:
Plutôt que de faire respecter l'enfant des instances de classe initialiser les champs, vous pouvez suivre une stratégie de la composition de votre parent constructeur de la classe de prendre un paramètre de mise en œuvre d'une interface qui fournit les champs que vous souhaitez avoir initialisé.
Je mets en garde contre l'obligation d'une sous-classe de l'instance de l'initialisation de la configuration, en utilisant une méthode abstraite de la mise en œuvre. L'affectation dans le constructeur de la classe parent se produit avant que le sous-classe de l'instance est initialisé, implicitement faire bon calcul de la configuration statique.
Si le calcul n'est pas statique, vous risquez de références nulles ou NullPointerExceptions par les développeurs suivantes vous (ou vous-même si votre mémoire est moins que parfait). De faciliter vos collaborateurs (et vous-même) et d'apporter les contraintes explicites.