当我在 Java 8 中使用函数时使用一元运算符和二元运算符

Sha*_*war 7 java java-8

在Java 8中,提供了许多函数式接口,例如UnaryOperator、BinaryOperator和Function等。

代码,

UnaryOperator<Integer> uOp = (Integer i) -> i * 10;
BinaryOperator<Integer> bOp = (Integer i1, Integer i2) -> i1 * i2 * 10;
Run Code Online (Sandbox Code Playgroud)

总是可以使用函数编写如下,

Function<Integer, Integer> f1 = (Integer i) -> i * 10;
BiFunction<Integer, Integer, Integer> f2 = (Integer i1, Integer i2) -> i1 * i2 * 10;
Run Code Online (Sandbox Code Playgroud)

那么,这些操作界面有什么用呢?他们实现的目标是否与使用 Function 实现的目标不同?

Rol*_*and 4

他们在这里是为了您的方便。您可以省去写作BiFunction<Integer, Integer, Integer>,只需编写/使用 aBinaryOperator<Integer>即可。另一个好处是:您可以确保提供给您的函数接受 1 个或两个相同类型的参数,并返回完全相同的类型,而无需进行更多编写。

此外,由于它的性质,将和 之BinaryOperator<T>类的东西放在那里更有意义,而将其放入 . 中并没有多大意义。由于给定的参数具有相同的类型,并且确保返回类型也相同,因此可以轻松应用比较器......非常方便。minBymaxByBiFunction<T, U, R>