与模板化不兼容的类型问题

时间:2015-12-20 08:12:56

标签: java generics java-8

我陷入了模板化问题。代码在我的办公室计算机上工作正常但不能在我的个人笔记本电脑上工作

代码:

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

答案 0 :(得分:-1)

某些这也不适用于您的工作机器。其原因有两个:由于仿制药的不变性; List<T>绝不会,形状或形式与List<String>相同。

你也错过了一个回复声明。但面对仿制药问题,这是一个小细节。

正如所写,唯一可行的方法是,如果你有办法通过某个过程将String转换为未绑定类型,但我不确定你是如何制作其中一个的没有instanceof语句的批次

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

我鼓励你重新考虑这种方法的设计,因为它已被破坏并且在概念上存在缺陷。