簡體   English   中英

通過功能接口使用Java泛型類型時發生編譯錯誤

[英]Compile error when using Java generic types with functional interface

我正在嘗試使用具有泛型類型的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;
    }
}

錯誤在代碼中指示。 關於我在做什么錯的任何指示?

例如,如果您實例化類,請使用:

TestClass<Integer> t = new TestClass<>();

fun的類型是:

Function<List<Integer>, Integer>

並且您不能將List<Number>傳遞給它的apply方法。

你可以改變:

List<Number> ln = new ArrayList<>();

至:

List<T> ln = new ArrayList<>();

消除錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM