网站首页 > 基础教程 正文
背景
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 初窥函数式接口,不会取标题,没有噱头,全是干货
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- deletesql (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)