在java泛型中使用通配符类型

时间:2013-02-11 15:11:53

标签: java

我想传递GameObject类的对象,它也会实现Collidable接口。应该怎么样?

private boolean isCollision(GameObject<? extends Collidable> collid) {
}

应该怎么样? collid必须是GameObjectCollidable的实例。

2 个答案:

答案 0 :(得分:3)

如果您想确保collidGameObject a Collidable,您可以使用以下语法:

private <T extends GameObject & Collidable> boolean isCollision(T collid)

答案 1 :(得分:0)

定义扩展GameObjectCollidable的界面可能更容易。然后将您的参数声明为该类型。

public interface CollidableGameObject extends GameObject, Collidable {
}

然后你的方法可能是:

private boolean isCollision(CollidableGameObject collid) {
}

除非我遗漏了某些东西,否则似乎不需要仿制药。如果GameObject还不是接口,请考虑将其设为一个接口吗?

相关问题