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

在java泛型中使用通配符类型,java,Java,我想传递GameObject类的对象,该类还将实现可碰撞的接口。它应该是什么样子 private boolean isCollision(GameObject<? extends Collidable> collid) { } private boolean isCollision(GameObject如果要确保collid是一个GameObject和一个colliable,可以使用以下语法: private <T extends GameObject & Colli

我想传递
GameObject
类的对象,该类还将实现
可碰撞的
接口。它应该是什么样子

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

private boolean isCollision(GameObject如果要确保
collid
是一个
GameObject
和一个
colliable
,可以使用以下语法:

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

如果要确保
collid
GameObject
a
colliable
,可以使用以下语法:

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

定义一个扩展
GameObject
Collidable
的接口可能更容易。然后将您的参数声明为该类型

public interface CollidableGameObject extends GameObject, Collidable {
}
那么您的方法可能是:

private boolean isCollision(CollidableGameObject collid) {
}

除非我丢失了一些东西,否则泛泛型就不需要了。如果<代码>游戏对象< /代码>还不是一个接口,考虑将它变成一个“

< p>”,可以定义一个扩展了<<代码> GAMObjs< /C> >和<代码>可碰撞的接口。然后声明你的参数是那个类型。

public interface CollidableGameObject extends GameObject, Collidable {
}
那么您的方法可能是:

private boolean isCollision(CollidableGameObject collid) {
}

除非我丢失了一些东西,否则泛泛型就不需要了。如果<代码>游戏对象< /代码>还不是一个接口,那么考虑一下它吧?