gpt4 book ai didi

java - 无法分配给没有类型参数的 Function

转载 作者:行者123 更新时间:2023-12-02 11:25:27 24 4
gpt4 key购买 nike

我不明白为什么对没有类型参数的函数进行赋值会产生编译错误:

Function f1 = (Integer x) -> x;

我不明白为什么,因为我可以通过以下方式做到这一点:

Function f2 = (Function<Integer, Integer>)((Integer x) -> x);

f1 和 f2 具有相同的类型,但我可以进行第二次分配,但不能进行第一次分配。

我也无法完成以下作业

Function<Object, Object> f3 = (Integer x) -> x;

但是可以做到这一点:

Function<Integer, Object> f4 = (Integer x) -> x;

请解释为什么 f2、f4 有效,而 f1 和 f3 无效。

最佳答案

f1 无效,因为 f1 使用原始类型,并且类型推断算法可能不会费心尝试处理它,因为原始类型是交互的遗留功能使用 Java 5 之前的代码;如果您使用 lambda,则您使用的不是 Java 5 之前的代码(此处)。

f2 有效,因为您正在执行类型推断算法不执行的工作。

f3 无效,因为 Integer 不是 Object。您的意思是“您可以将 Object 传递给 f3;但是 lambda 需要您将其传递为 Integer

f4 有效,因为类型一致。

关于java - 无法分配给没有类型参数的 Function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49672987/

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