избегать instanceof в Java

На каком-то этапе в университете мне сказали (а потом прочитали в четырнадцати местах), чтоinstanceof следует использовать только какКрайнее средство', Имея это в виду, любой может сказать, является ли следующий код, который у меня есть, последним средством. Я посмотрел вокруг на переполнение стека, но не могу найти похожий сценарий - возможно, я пропустил его?

private void allocateUITweenManager() {
   for(GameObject go:mGameObjects){
      if (go instanceof GameGroup) ((GameGroup) go).setUITweenManager(mUITweenManager);
   }
}

где

mGameObjects это массив, только некоторые из которыхGameGroup типGameGroup является подклассом абстрактного класса.GameObjectGameGroup использует интерфейсUITweenable у которого есть методsetUITweenManager()GameObject не использует интерфейсUITweenable

Я полагаю, что мог бы в равной степени (и, вероятно, должен) заменитьGameGroup в моем коде выше сUITweenable - Я бы задавал тот же вопрос.

Есть ли другой способ сделать это, чтобы избежатьinstanceof? Этот код не может потерпеть неудачу, как таковой (я думаю, верно?), Но, учитывая плохую прессуinstanceof кажется, получил, я совершил какой-то кардинальный грех ООП где-то вдоль линии, которая заставляет меня использоватьinstanceof Вот?

Заранее спасибо!

Ответы на вопрос(9)

Ваш ответ на вопрос