说我有以下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>
只能采用原始类型。我的问题是,有没有办法解决这个问题,即我希望foo采用Class<C>
C
是V
的原始类型。这可能吗?