gpt4 book ai didi

java - 将 Java 泛型类型与函数式接口(interface)一起使用时出现编译错误

转载 作者:行者123 更新时间:2023-11-30 02:01:33 25 4
gpt4 key购买 nike

我正在尝试使用具有泛型类型的 Java 函数接口(interface),但代码无法编译,我不明白为什么。这是代码的简化版本:

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<>();

消除错误。

关于java - 将 Java 泛型类型与函数式接口(interface)一起使用时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52696125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com