UnaryOperator功能接口Java示例

时间:2020-01-09 10:35:15  来源:igfitidea点击:

在这篇文章中,我们将看到Java java.util.function.UnaryOperator功能接口的示例。

UnaryOperator功能接口表示对单个操作数的操作,返回与其操作数相同类型的结果。 UnaryOperator扩展了java.util.function.Function接口,并为操作数和结果为相同类型的情况提供行为。由于它扩展了Function,因此继承了Function接口的所有方法

  • andThen(Function <?super R,?之后扩展V>)–这是一个默认接口方法,该方法以另一个Function作为参数并返回一个组合的Function,该Function依次执行首先执行调用Function的操作,然后执行after操作。
  • compose(Function <?super V,?在之前扩展T>)–这是Function接口中的默认方法,该方法将另一个Function用作参数,并返回一个组合函数,该函数按顺序执行先执行before操作,然后执行调用的操作功能。
  • R apply(T t)–这里T是传递给方法的参数的类型,它返回类型R的值。这是此功能接口中的抽象方法。如果编写的Lambda表达式采用一种类型的单个参数并返回相同类型的值,则可以将该Lambda表达式编写为UnaryOperator内置功能接口的实现,其中lambda表达式实现apply()方法。

identity()方法更改为返回UnaryOperator

  • identity()–这是一个静态方法,该方法返回一个UnaryOperator,该UnaryOperator返回其输入参数。

UnaryOperator接口apply()方法示例

在示例中,apply方法被实现为返回数字平方的lambda表达式。传递的参数和返回值均为int类型。

import java.util.function.UnaryOperator;

public class UnaryOperatorExample {
  public static void main(String[] args) {
    UnaryOperator unaryOperator = (n) -> n*n;
    System.out.println("3 squared is- " + unaryOperator.apply(3));
    System.out.println("9 squared is- " + unaryOperator.apply(9));
  }
}

输出:

3 squared is- 9
9 squared is- 81

UnaryOperator功能接口和Then()方法示例

如果要获得一个平方的数字,然后向其添加另一个整数,可以使用andThen()方法将其作为一系列操作来完成。

import java.util.function.UnaryOperator;

public class UnaryOperatorExample {
  public static void main(String[] args) {
    UnaryOperator<Integer> unaryOperator1 = (n) -> n*n;
    UnaryOperator<Integer> unaryOperator2 = (n) -> n + 1;
    System.out.println("Result- " + unaryOperator1.andThen(unaryOperator2).apply(3));
    System.out.println("Result- " + unaryOperator1.andThen(unaryOperator2).apply(9));
  }
}

输出:

Result- 10
Result- 82

UnaryOperator功能接口compose()方法示例

compose()方法与andThen()方法相反,因此,如果我们采用前面的示例,首先添加一个整数,然后对其求平方,那么可以使用compose()方法来构成该序列。

import java.util.function.UnaryOperator;

public class UnaryOperatorExample {
  public static void main(String[] args) {
    UnaryOperator<Integer> unaryOperator1 = (n) -> n*n;
    UnaryOperator<Integer> unaryOperator2 = (n) -> n + 1;
    System.out.println("Result- " + unaryOperator1.compose(unaryOperator2).apply(3));
    System.out.println("Result- " + unaryOperator1.compose(unaryOperator2).apply(9));
  }
}

输出:

Result- 16
Result- 100