私は大学のどこかの段階で、使用instanceofは「最後の手段」としてのみ使用すべきであると言われました (その後、多くの場所で読みました)。これを念頭に置いて、私が持っている次のコードが最後の手段であるかどうかを誰でも知ることができます. スタック オーバーフローについて調べてみましたが、同様のシナリオを見つけることができませんでした。
private void allocateUITweenManager() {
for(GameObject go:mGameObjects){
if (go instanceof GameGroup) ((GameGroup) go).setUITweenManager(mUITweenManager);
}
}
どこ
mGameObjects配列で、そのうちの一部のみがGameGroup型ですGameGroup抽象クラス のサブクラスですGameObject。GameGroupUITweenableメソッドを持つインターフェースを使用setUITweenManager()GameObjectインターフェイスを使用しないUITweenable
GameGroup上記のコードを同じように(そしておそらくそうすべき)置き換えることができると思いますUITweenable-同じ質問をするでしょう。
これを回避する別の方法はありinstanceofますか?このコード自体は失敗することはありません (私はそう思いますよね?) が、悪い報道が行われてinstanceofいるように見えることを考えると、私がここで使用している行のどこかで OOP の重大な罪を犯したのinstanceofでしょうか?
前もって感謝します!