假设我有以下 Java 方法
static <V> KK<V> foo(Class<? extends V> c) {
return null;
}
其中 KK 是以下泛型类:
class KK<T> {
}
然后编译以下内容:
KK<String> x = foo(String.class);
但这不会:
KK<Collection<String>> x = foo(Collection.class);
由于“不兼容的类型:必需:KK<Collection<String>>
找到:KK<Collection>
如果我定义 foo 如下:
static <V> KK<V> foo(Class<? super V> c) {
return null;
}
前一个调用编译,但以下调用也是如此,
KK<Collection<String>> x = foo(Object.class);
我希望不会。
原因是Class<V>
只能采用原始类型。我的问题是,有没有办法解决这个问题,即我希望Class<C>
fooC
采用V
. 这可能吗?