java泛型类 方法 接口_Java泛型:接收实现类的类型参数的接口方法

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...

但这对我来说不太满意

对不起,长期的帖子,我希望这一点很清楚.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值