我一直试图让这样的事情发挥作用:
private static <V, K> V<KnownType> from(K oldObject, Class<? extends V<KnownType>> newClass) {
...
}
但是,此方法签名会出现编译器错误:
V型不是通用的;它不能使用参数
进行参数化<KnownType>
基本上,我想要一种将K
转换为V<KnownType>
的方法。这可能吗?
此外,如果有人为此编写代码,还有一些额外的上下文 - 所有V
都有一个单一参数构造函数,它接受K
。
提前致谢。
编辑 - 输入类是V的子类。(? extends V...
)
答案 0 :(得分:3)
假设:
public interface SomeType<E>
试试这个:
private static <V extends SomeType<KnownType>, K> V from(K oldObject, Class<V> newClass) {
答案 1 :(得分:0)
Java中的类型参数只能对应类型。你希望V
成为一种类型的东西,一种对类型进行操作的更高级的“种类”。 Java中的泛型不适用于更高类型。