如果我们在 lambda 表达式的函数接口中添加不同的参数类型会怎样?

What happens if we add different parameter type in a function interface of a lambda expression?

我正在学习 lambda 表达式。我遇到了一个可以通过以下代码理解的场景:

Function<Integer,String> fn = (String s)->s;

在上面的 lambda 表达式语句中,我知道一个函数接受一个参数和 returns 提到的类型。但是为什么我们在"Function"部分提到参数类型,(这里是Integer),而参数是在“()”内部传递的。我知道它是语法的一部分,但我只想了解它可能有用的地方。即使我们传递不同的参数类型 (String)?

它也会运行

首先你写的Function是错误的。更正如下。

Function<Integer, String> fn = s -> String.valueOf(s);

你不能像上面那样声明不同的数据类型,你只能声明一个整数。任何其他数据类型作为输入参数都会导致编译失败。 lambda 函数参数的数据类型是可选的,由编译器推断。