Java 与模板化不兼容的类型问题
我陷入了模板化问题。代码在我的办公室电脑上运行良好,但在我的个人笔记本电脑上不起作用 代码:Java 与模板化不兼容的类型问题,java,generics,java-8,Java,Generics,Java 8,我陷入了模板化问题。代码在我的办公室电脑上运行良好,但在我的个人笔记本电脑上不起作用 代码: public <T> List<T> convert(List<String> values, Class<T> expectedClass) { if (expectedClass == String.class) { return values; } } 公共列表转换(列表值,类expected
public <T> List<T> convert(List<String> values, Class<T> expectedClass) {
if (expectedClass == String.class) {
return values;
}
}
公共列表转换(列表值,类expectedClass){
if(expectedClass==String.class){
返回值;
}
}
此代码显示此错误:
Incompatible Types.
Required: List<T>
Found: List<java.lang.String>
不兼容的类型。
必填项:列表
找到:列表
我不明白为什么这个代码在我的办公室电脑上工作,而不是在我的个人笔记本电脑上。
谁能帮帮我吗 我确信这在你的工作机器上也不起作用。原因有两个:由于泛型的不变性;
列表
与列表
在形式、形状上都不相同
您还缺少一个返回语句。但这只是泛型问题中的一个小细节
如前所述,唯一可行的方法是通过某种过程将字符串
转换为未绑定类型,但我不确定如何在没有大量instanceof
语句的情况下制作一个
从这里的推断,很难说你打算在这里做什么。也许您试图将列表
转换为更通用的内容,但从概念角度看,这听起来不可行
我鼓励您重新考虑这种方法的设计,因为它已经过时,而且在概念上存在缺陷。您确定它在办公室有效吗?未压缩的返回值应始终无法编译。if语句之后缺少return语句应该总是无法编译。“模板化”是一个误导性的术语。Java没有模板。