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!

Antworten auf die Frage(9)

Ihre Antwort auf die Frage