Как вывести тип аргумента? расширяет класс в объявлении интерфейса

1

Я разрабатываю некоторые интерфейсы для игры, и до сих пор я пришел к следующим определениям интерфейсов:

  • public interface Player<A extends Action, R extends Result> { }

  • public interface Game<P extends Player<? extends Action,? extends Result>> { }

Однако теперь я хотел бы получить доступ к ? extends Result ? extends Result в интерфейсе Game, я знаю, что могу сделать это, добавив три Game типа в Game, но это не нужно, поскольку информация уже существует.

Я хотел бы что-то вроде следующего:

public interface <A, R> Game<P extends Player<A extends Action, R extends Result>> { }

Однако этот код не является законным в Java (Java 8), поскольку я не могу определить <A, R> следующим образом.

Как мне это сделать?

Теги:
generics

1 ответ

2
Лучший ответ

Вам нужно будет сделать то, что вы изначально предложите, добавить "три общих типа в Game ".

Пока вы создаете правильные границы при объявлении параметров типового типа, вы можете использовать их для определения другого параметра типа.

Это лучший способ получить A и R в ваших методах интерфейса.

interface Game<A extends Action, R extends Result, P extends Player<A, R>> { }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню