1

假设我有以下 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. 这可能吗?

4

1 回答 1

0
于 2013-10-19T18:11:52.900 回答