返回第一个参数的函数有什么用?

sag*_*aga 5 java jvm arguments function parameter-passing

看看这个函数。该函数接受两个参数并返回传递的第一个参数。这样的功能怎么会有用呢?

Era*_*ran 5

我可以想到一种场景:

假设您有一些对象的 Stream 并将它们收集到Map. 某些Collectors.toMap()变体具有合并函数参数,用于处理合并重复键。即,如果同一个键有多个值,则合并函数确定哪个值将与该键关联。

public static <T, K, U>
Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,
                                Function<? super T, ? extends U> valueMapper,
                                BinaryOperator<U> mergeFunction)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,合并函数是一个BinaryOperator<U>接受两个相同类型的参数并返回相同类型的结果的函数。

如果您希望合并函数始终使用与给定键关联的第一个值,并忽略任何后续值,则需要一个接收两个参数并返回第一个参数的函数。当然,这样的函数可以使用简单的 lambda 表达式 - 轻松编写(v1,v2)->v1,因此您不必定义一个显式方法来执行此操作。