我只是想了解这里发生了什么? java.util.function.Function concatenateTwoStrings 在这里接受两个参数吗?因为,根据文档,它应该只接受 1 个参数,或者是否有一些幕后转换为 BiFunction?
import java.util.function.Function;
public class Main {
static Function<String, String> concatenateTwoStrings (Integer id){
return str -> str.concat(id.toString());
}
public static void main(String[] args) {
System.out.println(Main.concatenateTwoStrings(12).apply("hello"));
}
}
代码编译并输出“hello12”
不,
concatenateTwoStrings
不接受两个参数。此外,您发布的代码中绝对没有任何内容以任何方式表明该函数可能接受两个参数,因此不清楚是什么给您带来了这种印象以及您为什么要问这个问题。
因此,您应该准确解释您发布的代码给您带来这种印象的原因。
为了让您免遭麻烦,我敢打赌,正是
Function<String, String>
部分让您感到困惑。好吧,如果你看一下 Function<T,R>
的定义,你会发现第一个泛型参数对应于 一个且唯一一个 被 apply()
接受的参数,第二个泛型参数对应于 返回值该函数的。所以,它不是第二个参数,它是一个返回值。