有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    我确信这在你的工作机器上也不起作用。原因有两个:由于泛型的不变性;一个List<T>与一个List<String>在任何方式、形状或形式上都不相同

    您还缺少一个返回语句。但这只是泛型问题中的一个小细节

    如前所述,唯一可行的方法是通过某种过程将String转换为未绑定类型,但我不确定如何在没有大量instanceof语句的情况下制作一个

    从这里的推断,很难说你打算在这里做什么。也许你试图将List<String>转换成更通用的东西,但从概念的角度来看,这听起来不可行

    我鼓励你重新考虑这个方法的设计,因为它已经失败,而且在概念上有缺陷