Просто добавив к ответу от Эрана , вы, возможно, найдете более понятный пример из реальной жизни.
Давайте предположим, что у нас есть метод, который добавляет Integer i
иintValue
из Long l
, чтобы вернуться обратно как String s
представление.Это будет выглядеть следующим образом:
String convertToStringAfterAddingValues(Long l, Integer i) {
return String.valueOf(l.intValue() + i);
}
В мире FunctionalInterface
это можно представить как BiFunction
как анонимный класс:
BiFunction<Long, Integer, String> biFunctionAnonymous = new BiFunction<Long, Integer, String>() {
@Override
public String apply(Long l, Integer i) {
return String.valueOf(l.intValue() + i);
}
};
, который в мире лямбдазатем может быть представлен как:
BiFunction<Long, Integer, String> biFunctLambda = (l, i) -> String.valueOf(l.intValue() + i);
то же самое может быть представлено с использованием ссылки на метод с объектом класса, в котором находится метод, как:
BiFunction<Long, Integer, String> biFunctMethodReference = <YourClassInstance>::convertToStringAfterAddingValues;