Я разрабатываю некоторые интерфейсы для игры, и до сих пор я пришел к следующим определениям интерфейсов:
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>
следующим образом.
Как мне это сделать?
Вам нужно будет сделать то, что вы изначально предложите, добавить "три общих типа в Game
".
Пока вы создаете правильные границы при объявлении параметров типового типа, вы можете использовать их для определения другого параметра типа.
Это лучший способ получить A
и R
в ваших методах интерфейса.
interface Game<A extends Action, R extends Result, P extends Player<A, R>> { }