专业编程基础技术教程

网站首页 > 基础教程 正文

作为一名程序员到现在你还不会用函数式接口编程吗,是时候了解了

ccvgpt 2024-11-30 19:17:40 基础教程 2 ℃

背景

java 8 后提供了 函数式接口Consumer(消费型)、supplier(供给型)、predicate(谓词型)、function(功能性)

作为一名程序员到现在你还不会用函数式接口编程吗,是时候了解了

理解

从字面意思就知道是函数+接口的组合, 接口是用来干什么的,是用来抽象行为的, 我们通常用的接口,不加@FunctionalInterface 注解的,其实是对对象方法的抽象.

所以本质上封装一个函数的行为,是对方法本身进行抽象. 类比于Class 对象 是对类的封装.

一个方法逻辑: 入参, 返回值, 条件判断, 类型转换.

各个击破

从字面意思上看,consumer 接口一个消费型的接口,本质是对有参数,但是没有返回值方法的抽象.

Supplier 接口是一个供给型的接口,可以理解为一个容器,可以用来存储数据.本质是对没有入参,只有返回值方法的抽象.

Predicate 接口是一个谓词型接口,其实,作用就是对方法里面的判断逻辑进行抽象.


Function 接口是一个功能型接口,可以对数据进行转换处理,即将输入数据转换成另一种形式的输出数据。泛型的第一个参数是转换前的类型,第二个是转化后的类型. 本质是对既有入参又有返回值方法的抽象.

应用场景举例

通过上面的总结,我相信大家对函数式接口有了一定的理解.我再举个具体的例子来说明一下.

1 比如一群人举行Party去唱歌 , 但是大家唱的歌曲不一样,有人唱王力宏的<<唯一>>,有人唱<<什么才是爱>>,还有很多你不知道的歌曲,就只是单纯地唱歌,这个时候可以用consumer<T> 来抽象唱歌的行为,T就可以代表歌曲

2 大家都唱同一首歌,唱完后都可以拿到一个参与奖.那么之歌时候将可以用Supplier<T> 来抽象获取奖品的行为,T可以代替奖品.

3 大家唱一首歌,其中在这个过程中,谁唱得最好可以拿到一等奖,那么判断得奖的这个行为,就可以用Predicate<T>来抽象判断是不是得奖,这里的T就可以代表比赛的歌曲.

4 一群人唱不同的歌曲,然后对唱歌的水平做个评分,最后公布于众,这个时候就可以Function<T, R>来抽象,不同人唱歌评分的过程,其中T代表歌曲, 然后R代表分数.

最后

如果大家有更好的理解,欢迎指教,希望一起交流探讨,共同进步.

最近发表
标签列表