这是我参与更文挑战的第12天,活动详情查看: 更文挑战
今天 4ye 来和小伙伴们分享下 java8四大函数式接口 (Consumer
,Supplier
,Function
,Predicate
)的简单使用
当然我们不得不聊下它的这个函数式编程先,毕竟这个是一个很重要的改进 😁
函数式接口
函数式接口指的是接口中只有一个抽象方法的接口,用注解
@FunctionalInterface
标记,表示该接口是函数式接口
注解FunctionalInterface
如图,可以看到这里什么都没有,表面它只是一个标记接口.
四大接口
Consumer
源码如下:
作用: 内部消化传进来的参数, 没有返回值
示例:
1 | java复制代码Consumer<String> consumer=System.out::println; |
Supplier
源码如下:
作用: 没有传参 , 直接返回一个结果
示例:
1 | java复制代码Supplier<String> supplier= () -> "Supplier"; |
Function
额这个源码太长了,截取部分源码如下:
可以看到它是综合了这个consumer
和Supplier
🐖
作用: 根据传的参数,返回一个结果,这里是既有传参,又有返回值😝
示例:
1 | java复制代码Function<String,String> func= String::toUpperCase; |
Predicate
这个源码也比较长,截取部分源码如下:
作用: 判断给的参数是否符合条件,返回 false 或者 true
示例:
1 | java复制代码Predicate<String> predicate= "predicate"::equals; |
可以看到还是特别简单滴~
小例子
再举个小例子 (大家都熟悉的 hashmap
)
1 | java复制代码 @Test |
这里就用到这个 Function
函数式接口啦~ 对比这两种写法,是不是发现第一种简洁多啦!
而且我们又 get 到另外一个概念,lambda
表达式,通过第一种写法,我们也可以很快认识到,lambda
表达式其实是实现函数式接口的一个快捷方式~
那么本期就简单介绍这些先啦~😄
最后
欢迎小伙伴们来一起探讨问题~
如果你觉得本篇文章还不错的话,那拜托再点点赞支持一下呀😝
让我们开始这一场意外的相遇吧!~
欢迎留言!谢谢支持!ヾ(≧▽≦*)o 冲冲冲!!
我是4ye 咱们下期很快再见!!
本文转载自: 掘金