使用instanceof来处理对其他对象的反应

时间:2017-04-20 18:50:09

标签: java polymorphism collision instanceof

我编写了一个游戏,其中各种GameElement类可以相互冲突。所有GameElements都存储在主列表中。迭代该列表以确定冲突,然后主列表中的每个GameElement被给予与其冲突的其他GameElements的列表。到目前为止一切顺利

我有几个派生自GameElement的类,例如Tree或Car。

现在,当处理Tree和Car之间的碰撞时,如果与之碰撞的GameElement实际上是Car,则树可能希望调用getEngineType()。或者Car可能希望调用getTrunkLength(),如果它碰撞的GameElement实际上是一棵树。

目前我正在调用instanceof来确定我正在处理什么子类,但这感觉不干净。我能想到的唯一解决方案是为Tree和Car对象提供单独的列表,但随着类数量的增加,这可能会变得很麻烦。

是否有最好的做法来处理"类似"之间的互动?对象(GameElements)当这些交互依赖于特定于子类的方法和成员时?

编辑:碰撞检测不是问题! EDIT2:一个类似的问题,使用与我目前相同的解决方案实例 Avoiding instanceof in Java

0 个答案:

没有答案