当尝试使用方法引用时,我遇到了这样一种情况:concat方法可以用作BiFunction。据我所知,BiFunction apply方法需要2个输入参数并生成结果,而concat方法接受1个输入参数并返回连接此值的字符串。
示例代码:
示例代码:
public class Test {
public static void main(String[] args) {
Test t = new Test();
String str1 = "Hello";
String str2 = "Workld";
System.out.println(t.stringManipulator(str1, str2, String::concat));
System.out.println(str1);
System.out.println(str2);
}
private String stringManipulator(String inputStr, String inputStr2, BiFunction<String, String, String> function) {
return function.apply(inputStr, inputStr2);
}
}
输出
HelloWorkld
Hello
Workld
有人能帮我理解这里发生了什么吗?
str1
和str2
,并在它们上调用了String#concat(String, String)
吗?你自己说了,你还错过了什么吗? - RogueString::concat
操作两个字符串操作数,利用第一个作为实例。您将在流中看到类似的操作(例如,许多#map
调用)。 - Rogue