如何推断类型参数?在接口声明中扩展Class

时间:2014-03-19 17:42:48

标签: java generics

我正在为游戏开发一些界面,到目前为止,我得到了以下界面定义:

  • 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>

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您需要按照最初的建议,将“三种通用类型添加到Game”。

只要在声明泛型类型参数时创建适当的边界,就可以使用它们来定义另一个类型参数。

这是在界面方法中提供AR的最佳方法。

interface Game<A extends Action, R extends Result, P extends Player<A, R>> { }
相关问题