【发布时间】:2012-10-31 12:08:16
【问题描述】:
我一直在努力让这样的事情发挥作用:
private static <V, K> V<KnownType> from(K oldObject, Class<? extends V<KnownType>> newClass) {
...
}
但是,此方法签名会出现编译器错误:
V 型不是泛型的;它不能用参数
<KnownType>进行参数化
基本上,我想要一个将K 转换为V<KnownType> 的方法。这可能吗?
此外,如果有人为此编写代码,还有一些额外的上下文 - 所有V 都有一个单参数构造函数,它接受K。
提前致谢。
编辑 -- 输入类是V的子类。(? extends V...)
【问题讨论】:
-
你能改变相关类的继承层次吗?
-
我正在 SDK 之上构建一个层,该层本身无法修改。所以我不能修改
K或KnownType,但我可以修改V及其所有子类。 -
为什么需要这样做?反射是脆弱的。
-
因为我讨厌重复的代码。
标签: java generics type-conversion parameterized