2013-02-11 2 views
0

Я хочу передать объект класса GameObject, который также будет реализовывать интерфейс Collidable. Как это должно выглядеть?Использование подстановочных знаков в java generics

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

Как должно выглядеть оно? collid должен быть примером как GameObject, так и Collidable.

ответ

3

Если вы хотите, чтобы убедиться, что collid является GameObjectиCollidable, вы можете использовать этот синтаксис:

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

Это может быть проще определить интерфейс, который расширяет GameObject и Collidable. Затем объявите свой параметр таким типом.

public interface CollidableGameObject extends GameObject, Collidable { 
} 

Тогда ваш метод может быть:

private boolean isCollision(CollidableGameObject collid) { 
} 

Если я что-то не хватает, дженерики, кажется, не потребуется. Если GameObject еще не интерфейс, подумайте о том, чтобы сделать его одним?

Смежные вопросы