Java 8详细介绍的功能接口


功能接口作为Java 8的一部分引入。它使用称为@FunctionalInterface的注释实现。它确保接口应仅具有一种抽象方法。abstract关键字的用法是可选的,因为在接口内部定义的方法默认为abstract。重要的是要注意,一个功能接口可以有多个默认方法(可以说是默认的具体方法),但是只能有一个抽象方法。接口中引入了默认方法,以便可以在该类中添加新方法而不会影响现有接口的实现类。因为在Java 8之前,接口的实现类必须实现接口中定义的所有抽象方法。

另一方面,Java 8中引入了功能接口以支持Java 8中的lambda表达式,可以说lambda表达式是功能接口的实例。

例如:

20210306194237.png

众所周知,上述接口是在Java 8之前实现的。但是在Java 8中,它可以以更智能的方式实现。查找以下实现。

20210306194157.png 上面的功能接口详细信息的完整实现可在GitHub上获得,其链接将在本教程的最后提供。

在Java 8中,引入了4个主要的功能接口,这些接口可以在不同的场景中使用。这些在下面给出。

  1. Consumer
  2. Predicate
  3. Function
  4. Supplier 在上述四个接口中,前三个接口也具有以下扩展名。

Consumer - BiConsumer

Predicate – BiPredicate

Function – BiFunction, UnaryOperator, BinaryOperator

  1. CONSUMER 让我们讨论消费者。

  2. 使用者接口接受一个参数,但是没有返回值。

  3. 该接口内部的函数名称为accept。

20210306194123.png

Output: CONSUMER

上面的使用者接受一个参数并以大写形式打印它。但是没有返回值。

  • BICONSUMER Consumer的扩展名BiConsumer接受两个参数,不返回任何值。

20210306194000.png

  1. PREDICATE PREDICATE将接受一个参数,进行一些处理,然后返回布尔值。

20210306193931.png

Output: true

  • BIPREDICATE BiPredicate将接受两个参数而不返回任何参数,而不是一个参数。

  • FUNCTION 此接口接受一个参数,并在所需的处理后返回一个值。定义如下。所需的处理逻辑将在apply方法调用时执行。

20210306193658.png 例如,上面的Functional接口将被执行,而下面的代码将被执行。

20210306193625.png

Output: FUNCTIONAL

在上面的示例中,该函数接受一个字符串,并且还返回一个字符串。

  • BIFUNCTION BiFunction类似于Function,不同之处在于它接受两个输入,而Function接受一个参数。下面给出了BiFunction接口的示例代码。在下面的接口代码T中,U是输入,R是单个输出。

20210306193109.png

  • 一元运算符和二元运算符 另外两个接口是UnaryOperator和BinaryOperator,分别扩展了Function和BiFunction。以下是这两个接口的以下接口代码段。

20210306193033.png

从上面的接口可以很容易地理解,UnaryOperator接受单个参数并返回单个参数,但是输入和输出参数应该具有相同的相似类型。

另一方面,BinaryOperator接受两个参数并返回一个类似于BiFunction的参数,但所有输入和输出参数的类型应为相似的类型。

分别给出了UnaryOperator和BinaryOperator接口的以下示例。

20210306193010.png

  1. SUPPLIER SUPPLIER功能接口不接受任何输入,而是返回单个输出。给出以下接口代码以供理解。

20210306192937.png

查找以下代码示例:-

20210306192859.png

上面只是一个简单的示例,但是它可以用于复杂的业务场景中。对于上述所有方案,请从此处下载示例代码。


原文链接:http://codingdict.com