在
Java中,是否可以定义一个接口,该接口具有接收实现类参数的方法?
接口:
public interface MyInterface {
public void method(T object);
}
类:
public class A implements MyInterface {
public void method(A object) {
...
}
}
我想避免的是一个类可以像其他类一样实现MyInterface.
所以这不应该是允许的:
public class A implements MyInterface {
public void method(B object) {
...
}
}
编辑:
好的,我试着以另一种方式描述我想要实现的目标.我想要有几个类有一个接受该类类型的arg的方法.所以另外从上面的类A让我们说另一个类B看起来像这样:
public class B implements MyInterface {
public void method(B object) {
...
}
}
什么摊位A和B有一个共同的方法是一个方法称为“方法”接收类的类本身的arg.
在我的项目中,我想实现以下目标.我写一个小游戏,想要实现某种碰撞检测.基本上我想通过做一些“智能”多态调用来做到这一点.
我定义了一个接口ICollisionReceiver,如下所示:
public interface ICollisionReceiver extends IShape {
public boolean collides(T t);
}
我定义了另一个接口:
public interface ICollisionChecker> extends IShape {
public void addCollisionReceiver(ICollisionReceiver receiver);
public void removeCollisionReceiver(ICollisionReceiver receiver);
}
现在例如我的播放器实现接口ICollisionReceiver,当播放器接收到碰撞并处理它们.这应该以通用的方式完成,所以例如我有框和圆,现在玩家实现ICollisionReceiver和ICollisionReceiver圈>
所以我有两种方法
@Override
public boolean collides(final Box b) {
...
return false;
}
和
@Override
public boolean collides(final Circle c) {
...
return false;
}
在我的框和圆类中,我可以注册ICollisionReceivers,然后在更新方法中执行以下操作:
boolean conti = true;
int i=0;
while(conti && i
final ICollisionReceiver rec = collisionReceivers.get(i);
if(this.collidesWith(rec)) {
conti = rec.collides(this);
}
++i;
}
这基本上是检查这个盒子是否与某个接收器碰撞,然后调用接收器碰撞()方法.
现在的一点是,我想确保两个类框和圆实现ICollisionChecker接口只有自己的类型.
我明白可以这样做
public class Bonus extends AnimatedSprite implements ICollisionChecker...
但这对我来说不太满意
对不起,长期的帖子,我希望这一点很清楚.