J'ai une classe d'écran, qui est la classe de base de plusieurs types d'écrans, par exemple PauseScreen, MainScreen, etc.Dynamiquement comparer les types en Java
J'ai une pile d'écrans dans mes classes, et mon jeu est Pousser/poping écrans en fonction des boutons.
Mais j'ai besoin de passer d'un écran à l'autre (tout ce qui se passe jusqu'à l'écran nécessaire).
Disons que j'ai un MainScreen, un GameScreen et un PauseScreen. Je dois passer de PauseScreen à MainScreen, (popping PauseScreen et GameScreen).
Quelle est la méthode préférée pour le faire en java? Je pourrais stocker un identifiant dans chaque écran, mais cela ne semble pas correct. Edit: C'est ce que je veux réaliser, j'étais juste curieux de savoir qu'il y avait un meilleur moyen qui ne nécessite pas de créer une énumération (IIRC il est possible d'obtenir le type de la classe à l'exécution, mais peut-être c'est une mauvaise pratique pour ce que je veux faire?).
class X
{
Stack<Screen> screens = new Stack<Screen>();
void push(Screen s)
{
screens.push(s);
}
void pop()
{
screens.pop();
}
void popUntil(Screen.Type t)
{
// go through the list in reverse order
while(screens.next().type != t)
screens.pop();
}
}
// other places in the code
app.popUntil(Screen.Type.MainScreen);
app.popUntil(Screen.Type.GameScreen);
Principalement opinion fondée !, par exemple utiliser instanceof ou vous l'écran de peut mettre en œuvre et de l'interface avec la méthode int getTypeOfScreen(), la manière préférée? ? Ta façon!!! –
Bien sûr, je pourrais juste le faire et passer à autre chose, mais comme je suis nouveau avec la langue, je voulais d'abord voir s'il y avait de meilleurs moyens pour y parvenir. – Aulaulz
Votre quête est légitime, mais sans connaître votre code exact, il devient très difficile de répondre "de manière préférée", j'aurais probablement préféré une interface commune et appeler un int public getType() avec une belle déclaration de commutateur ... Alors que est préféré ?, le plus rapide, le plus lisible, le code le plus court .... ou la façon dont vous savez le mieux ?? –