公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。
在这篇文章中,我们将通过示例来学习 Java 函数式接口。
函数式接口的特点
- 只包含一个抽象方法的接口称为函数式接口。
- 它可以有任意数量的默认静态方法,但只能包含一个抽象方法。它还可以声明对象类的方法。
- 函数接口也称为单一抽象方法接口或SAM 接口。
- 函数式接口只有在没有任何抽象方法时才可以扩展另一个接口。
- Java API 具有许多单方法接口,例如 Runnable、Callable、Comparator、ActionListener等。它们可以使用匿名类语法来实现和实例化。
接口示例
自定义函数接口示例
讯享网让我们通过方法来演示一个自定义的函数式接口。我们使用Lambda表达式来实现函数式接口。
讯享网
Predefined 函数接口
Java提供了的函数式接口,通过使用 lambda 和方法引用来处理函数式编程。
是检查条件的函数,它接受一个参数并返回boolean结果。
让我们来看一下Predicate接口的内部实现。
Predicate接口只包含一个抽象方法test(T t)同时它还包含默认方法和静态方法。
让我们创建一个示例来演示Predicate函数式接口的用法:
讯享网
Function 函数接口
Function函数接口是Java中的一个函数式接口,它定义了一个接收一个参数并返回结果的函数。它的定义如下:
Function接口有两个泛型参数:T表示输入参数的类型,R表示返回结果的类型。它包含一个抽象方法apply(),接收一个类型为T的参数,并返回一个类型为R的结果。
Function接口常用于将一个值转换为另一个值,或者对输入值进行处理和计算。它可以被用于各种场景,如数据转换、映射、计算和处理等。
以下是一个使用Function函数接口的示例:
Supplier 函数接口
Supplier用于表示一个提供(供应)结果的函数。它通常用于延迟计算或在需要时生成值。通过调用get()方法,我们可以获取由Supplier实例提供的结果。
以下是Consumer接口的实现
由于Supplier接口只有一个抽象方法,因此可以使用lambda表达式快速创建Supplier实例。下面是一个示例:

Consumer 函数接口
Consumer用于表示接受一个参数并执行某些操作的函数。它定义了一个名为的抽象方法,接受一个参数,并且没有返回值。
以下是Consumer接口的简化版本
在上述示例中,我们创建了两个Consumer接口的实例。第一个printName用于打印每个名字,第二个uppercaseName用于将每个名字转换为大写形式并打印。
通过调用forEach()方法并传入相应的Consumer接口实例,我们可以对列表中的每个元素执行相应的操作。在示例中,我们对名字列表中的每个名字进行了打印和转换操作。
Consumer接口的使用场景包括遍历集合、处理回调函数、更新对象状态等。它提供了一种简洁的方式来执行针对输入参数的操作,使得代码更加清晰和模块化。
BiFunction 函数接口
函数式接口表示接受两个参数并返回结果的函数。它定义了一个名为的抽象方法,接受两个参数,并返回一个结果。
让我们来看一下接口的简化版本。
BiConsumer函数接口
接口,用于表示接受两个参数并执行某些操作的函数。它定义了一个名为的抽象方法,接受两个参数,并且没有返回值。
以下是BiConsumer接口的简化版本:
那些库或中间件再用BiConsumer
java基础函数式接口
BiPredicate 函数接口
接口用于表示接受两个参数并返回一个布尔值的函数。它定义了一个名为test(T t, U u)的抽象方法,接受两个参数,并返回一个布尔值。
以下是BiPredicate接口的简化版本:
BiPredicate接口适用于那些需要对传入的两个参数进行某种条件判断,并返回布尔值的情况。它可以用于执行各种条件判断,如相等性比较、大小比较、复杂条件判断等。
下面是一个使用BiPredicate接口的示例:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/3256.html