在某个阶段的大学里(并且随后在很多地方读到),我被告知只有在“万不得已”的情况下才应该使用 instanceof
。基于这个想法,有人能告诉我以下代码是否是最后的选择吗?我在stackoverflow上看了一下,但似乎没有找到类似的场景——也许我错过了?
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
吗?
提前致谢!
instanceof
,因为所有其他解决方法似乎都很复杂(包括多态性)。此外,请看一下这篇文章,您会发现它很有趣。 - Rahul Tripathigo instanceof UITweenable
。 - Ted Hopp