我正在尝试使用具有泛型类型的 Java 函数式接口,但代码无法编译,我不知道为什么。这是代码的简化版本:import java.util.ArrayList;import java.util.List;import java.util.function.Function;public class TestClass <T extends Number> { Function<List<T>, Integer> fun; public void testFun (List<T> x) { List<Number> ln = new ArrayList<>(); fun.apply(ln); // error: incompatible types: List<Number> cannot be converted to List<T> testApply(ln); // This is similar to the code above, but compiles fine } public <M extends Number> Integer testApply(List<M> x) { return 0; }}错误在代码中指出。关于我做错了什么的任何指示?
1 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
如果你实例化你的类,例如:
TestClass<Integer> t = new TestClass<>();
的类型fun
是:
Function<List<Integer>, Integer>
并且您不能将 a 传递List<Number>
给它的 apply 方法。
你可以改变:
List<Number> ln = new ArrayList<>();
到:
List<T> ln = new ArrayList<>();
以消除错误。
添加回答
举报
0/150
提交
取消