При попытке воспроизвести ссылки на методы столкнулся с ситуацией, когда метод concat может использоваться как BiFunction, так как я понимаю, что метод BiFunction apply требует 2 входных аргумента и дает результат. Принимая во внимание, что метод concat принимает 1 входной аргумент и возвращает конкатенированную строку с этим значением.String.concat используется как функция BiFunction
Пример кода:
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)' на них? Вы сами это сказали, чего не хватает? – Rogue
Также обратите внимание, что строки неизменяемы, вызов concat на них создает другой строковый объект, он не будет мутировать их (если это было то, что вы просили) – Rogue
Нет, я не спрашиваю о мутации. Но я не могу представить String # concat (String, String) этот метод в классе String. У вас есть ссылка. –