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