我正在为游戏开发一些界面,到目前为止,我得到了以下界面定义:
public interface Player<A extends Action, R extends Result> { }
public interface Game<P extends Player<? extends Action, ? extends Result>> { }
但是现在我想访问? extends Result
界面中的Game
,我知道我可以通过向Game
添加三种泛型类型来实现,但不应该这样做信息已经存在。
我想要以下内容:
public interface <A, R> Game<P extends Player<A extends Action, R extends Result>> { }
然而,这段代码在Java(Java 8)中是不合法的,因为我无法像这样定义<A, R>
。
我该怎么做?
答案 0 :(得分:2)
您需要按照最初的建议,将“三种通用类型添加到Game
”。
只要在声明泛型类型参数时创建适当的边界,就可以使用它们来定义另一个类型参数。
这是在界面方法中提供A
和R
的最佳方法。
interface Game<A extends Action, R extends Result, P extends Player<A, R>> { }