软软猿妹问我JDK中眼花缭乱的Function/Consumer/Supplier/Predicate?(上)

简介: 哈喽,大家好,我是指北君。JDK中有许多函数式接口,也会有许多方法会使用函数式接口作为参数,同时在各种源码中也大量使用了这些方法,那么我们在实际工作中应该如何使用!我们就来盘一盘,这样也有助于写出优雅的代码,使我们在阅读源码时事半功倍。

1 JDK中常见的Lamada表达式

Java中可以使用Lamada表达式的接口都有@FunctionalInterface注解。

先来看看util.function包下面含有FunctionalInterface注解的接口。一屏显示不全,可见功能非常齐全。

鉴于常用的一些函数式接口有Function/Consumer/Supplier/Predicate以及Runnable等。本篇介绍这几类接口。

80.jpg81.jpg

1.1 Runnable

82.png

Runnable 使用Lamada方式书写时,无参数,无返回值。最终执行的是run方法

使用Demo

83.png


1.2 Function

Function 表示接受一个参数并产生结果的函数。


84.png

Function<T,R>接受一个参数T,并且有返回值 R, 其实现也主要是实现此方法 R apply(T t);

Function 的一个示例:

85.png


上述示例中是一个stream的map方法。其中x为输入参数,『"Java North and" + x』为输出。


1.3 Consumer

Consumer表示接受一个参数,没有返回值的操作,主要方法为 void accept(T t);

86.png


1.3.1 Consumer 在Java中的应用

常见的有List的forEach等。


87.png

x为参数,输出语句直接执行。

下面的map的forEach参数为BiConsumer,其入参有两个。

88.png

1.3.2 自定义带有Consumer的方法

89.png

1.4 Supplier

Supplier没有参数,有一个返回值。


90.png

相关文章
|
5月前
|
API
JDK8函数式接口之Supplier
JDK8函数式接口之Supplier
77 0
|
5月前
|
Java API 容器
Java8函数式编程接口:Consumer、Supplier、Function、Predicate
Java8函数式编程接口:Consumer、Supplier、Function、Predicate
86 1
|
5月前
|
API
JDK8函数式接口之Consumer
JDK8函数式接口之Consumer
144 0
Java8中的函数式接口详解(Supplier、Consumer、Predicate、Function)
Java8中的函数式接口详解(Supplier、Consumer、Predicate、Function)
828 1
|
Java
1.3 Lambda表达式的基础:常用的函数式接口:Predicate、Consumer、Function等
1.3 Lambda表达式的基础:常用的函数式接口:Predicate、Consumer、Function等
68 0
常用函数式接口:Consumer、Predicate、Function的方法说明解练习
常用函数式接口:Consumer、Predicate、Function的方法说明解练习
83 0
|
Java 程序员 Go
Java 8 - 03 Lambda 函数式接口Predicate & Consumer & Function & Supplier
Java 8 - 03 Lambda 函数式接口Predicate & Consumer & Function & Supplier
107 0
|
Java
【JDK8之旅】——Supplier
【JDK8之旅】——Supplier
97 0
|
Oracle Java 关系型数据库
【Java8新特性】04 详解Lambda表达式中Predicate Function Consumer Supplier函数式接口
【Java8新特性】04 详解Lambda表达式中Predicate Function Consumer Supplier函数式接口
|
2月前
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
下一篇
无影云桌面