泛型类型的类参数

4

这段代码无法编译:

public static void main(String[] args) {
  someMethod(SomeInterfaceImpl.class); // Compile error
}

static <T> void someMethod(Class<? extends SomeInterface<T>> param) {}

interface SomeInterface<T> {}

class SomeInterfaceImpl<T> implements SomeInterface<T> {}

这是显示的错误信息:
SomeApp类型中的someMethod(Class<? extends SomeInterface<T>>)不适用于参数(Class<SomeInterfaceImpl>)

我可以忽略泛型并使用@SuppressWarnings("rawtypes")进行注释。
我该如何修改代码才能在不省略泛型定义的情况下使用此方法?要么我需要更改调用方法的方式并提供某种泛型化的类,要么我需要更改方法定义。

注意:?代表Object类,因此根据提供的信息无法得出任何结论。 - bananas
1个回答

2

可能的解决方案

旧版:

static <T> void someMethod(Class<? extends SomeInterface<T>> param) {..}

新:

static <T extends SomeInterface<?>> void someMethod(Class<T> param) {..}

1
我将此答案设为社区维基,以鼓励其他人添加适当的解释,说明为什么这个答案的解决方案有效,而 OP 版本无效(目前我无法做到)。 - Pshemo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接