java与模板化不兼容的类型问题
我陷入了模板化问题。代码在我的办公室电脑上运行良好,但在我的个人笔记本电脑上不起作用
代码:
public <T> List<T> convert(List<String> values, Class<T> expectedClass) {
if (expectedClass == String.class) {
return values;
}
}
此代码显示此错误:
Incompatible Types.
Required: List<T>
Found: List<java.lang.String>
我不明白为什么这个代码在我的办公室电脑上工作,而不是在我的个人笔记本电脑上。 谁能帮帮我吗
# 1 楼答案
我确信这在你的工作机器上也不起作用。原因有两个:由于泛型的不变性;一个
List<T>
与一个List<String>
在任何方式、形状或形式上都不相同您还缺少一个返回语句。但这只是泛型问题中的一个小细节
如前所述,唯一可行的方法是通过某种过程将
String
转换为未绑定类型,但我不确定如何在没有大量instanceof
语句的情况下制作一个从这里的推断,很难说你打算在这里做什么。也许你是试图将
List<String>
转换成更通用的东西,但从概念的角度来看,这听起来不可行我鼓励你重新考虑这个方法的设计,因为它已经失败,而且在概念上有缺陷