Vermeiden Sie instanceof in Java
Irgendwann an der Universität wurde mir gesagt (und ich habe später an bis zu 14 Stellen gelesen), dass ich das benutzeinstanceof
sollte nur als "letzter Ausweg" verwendet werden. In diesem Sinne kann jeder sagen, ob der folgende Code, den ich habe, ein letzter Ausweg ist. Ich habe mich beim Stapelüberlauf umgesehen, kann aber kein ähnliches Szenario finden - vielleicht habe ich es verpasst?
private void allocateUITweenManager() {
for(GameObject go:mGameObjects){
if (go instanceof GameGroup) ((GameGroup) go).setUITweenManager(mUITweenManager);
}
}
woher
mGameObjects
ist ein Array, von dem nur einige sindGameGroup
ArtGameGroup
ist eine Unterklasse der abstrakten KlasseGameObject
.GameGroup
Benutzt die SchnittstelleUITweenable
welches Methode hatsetUITweenManager()
GameObject
verwendet keine SchnittstelleUITweenable
Ich vermute, ich könnte es gleichermaßen (und sollte es wahrscheinlich) ersetzenGameGroup
in meinem Code oben mitUITweenable
- Ich würde die gleiche Frage stellen.
Gibt es einen anderen Weg, der das vermeidet?instanceof
? Dieser Code kann als solcher nicht scheitern (ich denke, richtig?), Aber angesichts der schlechten Presseinstanceof
scheint zu bekommen, habe ich eine Kardinalsünde von OOP irgendwo entlang der Linie begangen, die mich benutzt hatinstanceof
Hier?
Danke im Voraus!