只是添加到answer from Eran,您可能会找到一个更好理解的真实示例。
假设我们有一个方法,它添加了 Long l 的 Integer i 和 intValue 以作为 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);
}
};
在 lambda 世界中可以表示为:
BiFunction<Long, Integer, String> biFunctLambda = (l, i) -> String.valueOf(l.intValue() + i);
同样可以使用方法引用与该方法所在的类的对象表示:
BiFunction<Long, Integer, String> biFunctMethodReference = <YourClassInstance>::convertToStringAfterAddingValues;