软软猿妹问我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

相关文章
|
9月前
|
API
JDK8函数式接口之Supplier
JDK8函数式接口之Supplier
131 0
|
9月前
|
Java API 容器
Java8函数式编程接口:Consumer、Supplier、Function、Predicate
Java8函数式编程接口:Consumer、Supplier、Function、Predicate
178 1
Java8中的函数式接口详解(Supplier、Consumer、Predicate、Function)
Java8中的函数式接口详解(Supplier、Consumer、Predicate、Function)
1049 1
|
9月前
|
API
JDK8函数式接口之Consumer
JDK8函数式接口之Consumer
181 0
常用函数式接口:Consumer、Predicate、Function的方法说明解练习
常用函数式接口:Consumer、Predicate、Function的方法说明解练习
110 0
|
Java
1.3 Lambda表达式的基础:常用的函数式接口:Predicate、Consumer、Function等
1.3 Lambda表达式的基础:常用的函数式接口:Predicate、Consumer、Function等
82 0
|
Java 程序员 Go
Java 8 - 03 Lambda 函数式接口Predicate & Consumer & Function & Supplier
Java 8 - 03 Lambda 函数式接口Predicate & Consumer & Function & Supplier
132 0
|
Java
【JDK8之旅】——Supplier
【JDK8之旅】——Supplier
115 0
|
Oracle Java 关系型数据库
【Java8新特性】04 详解Lambda表达式中Predicate Function Consumer Supplier函数式接口
【Java8新特性】04 详解Lambda表达式中Predicate Function Consumer Supplier函数式接口
|
3月前
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。