2

我一直在尝试使这样的工作:

private static <V, K> V<KnownType> from(K oldObject, Class<? extends V<KnownType>> newClass) {
    ...
}

但是,此方法签名会出现编译器错误:

V 型不是通用的;它不能用参数参数化<KnownType>

基本上,我想要一个转换KV<KnownType>. 这可能吗?

此外,如果有人为此编写代码,还有一些额外的上下文——所有V的都有一个单参数构造函数,它接受一个K.

提前致谢。

编辑——输入类是 V 的子类。 ( ? extends V...)

4

2 回答 2

3

假设:

public interface SomeType<E>

尝试这个:

private static <V extends SomeType<KnownType>, K> V from(K oldObject, Class<V> newClass) {
于 2012-11-12T02:01:14.687 回答
0

Java 中的类型参数只能对应一个类型。你想V成为某种本身接受一种类型的东西,一种对类型进行操作的更高“种类”的东西。Java 中的泛型不适用于更高的种类。

于 2012-11-13T01:52:40.717 回答