Zoals jullie ongetwijfeld wel weten, is het niet mogelijk om static methods te overriden in een subklasse.
Echter is dat wel de functionaliteit die ik zou willen. Kan er hier iemand een goed alternatief bedenken?
De situatie is als volgt:
Superklasse (abstract) ConditieTest, met als subklasses fietstest, looptest, etc.
De user vraagt via de interface een lijst van mogelijke tests op, en kiest een test om aan te maken (sidenote: goede manier om lijst van mogelijke testen dynamisch te maken? Dacht voorlopig aan een collection van Class objects, opdewelke je dan class.newInstance kan doen? Wil vermijden dat UI moet weten welke subklasses er zijn)
Elke test heeft een bepaald aantal parameters, laten we die TestOptions noemen. Denk aan dingen zoals loopafstand, bandenspanning, hellingsgraad, tijd, etc (hier lijken ze nog vrij gemeenschappelijk voor eventueel in de superklasse te steken, maar ze zijn redelijk specifiek en horen dus bij elke subklasse apart.)
Om deze values in de user interface te kunnen invullen, dacht ik een static methode aan te maken die alle TestOptions opvraagt, en dan in de interface hierover te itereren om zo de required fields hiervoor aan te maken.
Echter kan ik op een Class object geen static methodes aanroepen, laat staan dat ik static methodes kan overerven (ik weet immers enkel dat mijn gekozen Class object van het type ConditieTest is, maar het subtype ken ik niet, dus ik zou het op de super moeten oproepen).
Concrete vragen:
Is er een betere manier om dynamisch de verschillende tests door te geven aan de user interface?
Is er een propere manier om de specifieke TestOptions per subklasse op te vragen?
De enige optie die ik zelf kan bedenken is een soort van buildermethod/klasse schrijven, maar alle input is welkom!
Echter is dat wel de functionaliteit die ik zou willen. Kan er hier iemand een goed alternatief bedenken?
De situatie is als volgt:
Superklasse (abstract) ConditieTest, met als subklasses fietstest, looptest, etc.
De user vraagt via de interface een lijst van mogelijke tests op, en kiest een test om aan te maken (sidenote: goede manier om lijst van mogelijke testen dynamisch te maken? Dacht voorlopig aan een collection van Class objects, opdewelke je dan class.newInstance kan doen? Wil vermijden dat UI moet weten welke subklasses er zijn)
Elke test heeft een bepaald aantal parameters, laten we die TestOptions noemen. Denk aan dingen zoals loopafstand, bandenspanning, hellingsgraad, tijd, etc (hier lijken ze nog vrij gemeenschappelijk voor eventueel in de superklasse te steken, maar ze zijn redelijk specifiek en horen dus bij elke subklasse apart.)
Om deze values in de user interface te kunnen invullen, dacht ik een static methode aan te maken die alle TestOptions opvraagt, en dan in de interface hierover te itereren om zo de required fields hiervoor aan te maken.
Echter kan ik op een Class object geen static methodes aanroepen, laat staan dat ik static methodes kan overerven (ik weet immers enkel dat mijn gekozen Class object van het type ConditieTest is, maar het subtype ken ik niet, dus ik zou het op de super moeten oproepen).
Concrete vragen:
Is er een betere manier om dynamisch de verschillende tests door te geven aan de user interface?
Is er een propere manier om de specifieke TestOptions per subklasse op te vragen?
De enige optie die ik zelf kan bedenken is een soort van buildermethod/klasse schrijven, maar alle input is welkom!