Java Lambda 到比较器转换 - 中间表示
2022-09-04 20:04:17
我试图理解函数是如何工作的。我创建了自己的比较方法来理解它。Comparator.comparing
private static <T,U extends Comparable<U>> Comparator<T> comparing(Function<T,U> f) {
BiFunction<T,T,Integer> bfun = (T a, T b) -> f.apply(a).compareTo(f.apply(b));
return (Comparator<T>) bfun;
}
此函数中的最后一行将引发异常。
但是,如果我将此函数更改为
private static <T,U extends Comparable<U>> Comparator<T> comparing(Function<T,U> f) {
return (T a, T b) -> f.apply(a).compareTo(f.apply(b));
}
它按预期工作正常。
第二次尝试使用的中间函数接口是什么,它能够将 lambda 转换为 ?Comparator