我正在嘗試使用具有泛型類型的 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
提交
取消