网站首页 > 基础教程 正文
背景
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代表分数.
最后
如果大家有更好的理解,欢迎指教,希望一起交流探讨,共同进步.
猜你喜欢
- 2024-11-30 Java开发「函数式编程」——Lambda表达式
- 2024-11-30 玩转java8 lambda表达式三之对象方法引用
- 2024-11-30 Java 中的 Supplier:让数据生成更灵活
- 2024-11-30 Java 中的 Predicate:让判断逻辑更清晰灵活
- 2024-11-30 Java8精华-函数式编程(一)读完这篇,你将彻底理解
- 2024-11-30 你知道实现一个JAVA接口有几种方式吗?配合lambda更加意想不到
- 2024-11-30 java8精华-函数式编程-Predicate(四)
- 2024-11-30 巧妙应用 Java 的 Functional Interface:让代码更简洁、更灵活
- 2024-11-30 函数式接口编程真没那么难,简单几行让你的代码更优雅
- 2024-11-30 初窥函数式接口,不会取标题,没有噱头,全是干货
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)