Java中冲突处理程序的动态方法

Java中冲突处理程序的动态方法,java,android,collision,game-physics,Java,Android,Collision,Game Physics,我想为我的游戏设置一套碰撞手柄,这样我就不必复制太多代码,也不必缩短存储空间。在一个类中的方法中,对于两个特定的对象,它看起来是这样的 //Inside collision class public void checkCollision(Block block, Ball ball){ //do stuff with the variables given } 这意味着我只能检查block+球的碰撞 我的问题是:是否可以更改给定的对象,例如,以便我可以使用相

我想为我的游戏设置一套碰撞手柄,这样我就不必复制太多代码,也不必缩短存储空间。在一个类中的方法中,对于两个特定的对象,它看起来是这样的

   //Inside collision class     
   public void checkCollision(Block block, Ball ball){
   //do stuff with the variables given
   }
这意味着我只能检查block+球的碰撞

我的问题是:是否可以更改给定的对象,例如,以便我可以使用相同的方法,只解析对象,例如地板对象和球,但有时使用块和球

而且有时候地板是不可用的,所以我不能只解析方块和球,如果它想要全部三个

这样我就不用再花钱了

    public void collision(Block block, Floor floor, Ball ball){
    }
如果你不明白,请询问, 非常感谢


查尔顿桑塔纳

如果你有这样的方法怎么办:

// ...
public void checkCollision(Collidable a, Collidable b) {
    a.collideWith(b);
}
和一个接口

public interface Collidable {

    SomeReturnType collideWith(Collidable coll);
}
在这种情况下,您可以将任何
Collidable
与另一个
Collidable
方法中处理冲突的方法相冲突

这只是一个想法,还不清楚你想如何达到这个效果。因此,如果你扩展你的答案,我可以进一步帮助你。

使方法过载

public void collision(Block block, Floor floor, Ball ball){
   //do stuff
}

public void collision(Floor floor, Ball ball){
   //do stuff
}

public void collision(Block block, Ball ball){
   //do stuff
}

您可以使用集合和泛型,如:

    public void void checkCollision(List<? extends Collidable> objects) {
    // test whatever you want

}

公共作废检查冲突(ListOverloading将导致重载方法的激增。他必须用继承或策略模式imho来解决这个问题。好吧,这很好,我只是想,如果我这样做,我必须为每个级别做一个方法……在每个方法中,我将有大约50行代码,我计划有很多级别。同意吗有了这个,我将用一个静态void CheckCollision(Collidable[]objects)方法编写一个CollisionHandler类,在那里您可以决定如何划分对象等等。。。