Sto creando un framework in Java e ho un metodo nella mia classe astratta, BasicPhase, chiamato processAction (snippet di seguito). Prende due classi astratte come parametri poiché l'utente dovrebbe implementarle in classi figlio. Tuttavia, risulta che all'utente viene richiesto di essere costantemente downcast ogni volta che sostituisce il metodo. Come può essere evitato?
BasicPhase.java
public class BasicPhase {
...
public BasicGameState processAction(BasicAction action, BasicGameState state);
...
}
Esempio di classe utente
MyPhase.java
public class MyPhase extends BasicPhase {
@Override
public BasicGameState processAction(BasicAction basicAction, BasicGameState basicState) {
MyGameState state = (MyGameState) basicState; //undesired
MyAction action = (MyAction) basicAction; //undesired
//Game Logic Here
}
}