【发布时间】:2012-05-09 22:19:39
【问题描述】:
我在一个抽象 java 类中有以下代码:
protected abstract <E extends HasText & IsWidget> E createNewDisplayWidget();
编译得很好。但是,如果我在任何地方调用它,编译器都会抱怨:
Bound mismatch: The generic method createNewDisplayWidget() of type DemoClass is not applicable for the arguments (). The inferred type HasText is not a valid substitute for the bounded parameter <E extends HasText & IsWidget>
有没有办法要求抽象方法返回应该实现多个接口的东西?
注意:不,我不能创建一个特殊的接口来实现我喜欢的两个。 GWT 有像 Label 这样的小部件,它们已经实现了上述接口,我想使用上述小部件。
编辑:我从这里得到了这样做的想法(第 22 页):
【问题讨论】:
-
你试过用逗号代替and吗?
-
逗号表示边界在 IsWidget 处结束。 HasText 然后被忽略。编译器会抛出一个警告,说第二种类型是“隐藏的”。
-
您能向我们展示您的一个/一些呼叫站点吗?
-
@McTrafik 好的,很高兴知道:)
-
我不相信这实际上是可能的。返回该交叉点中的实际类。
标签: java gwt parametric-polymorphism