1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 必看:通俗易懂地告诉你什么是java8中的“函数式接口”

必看:通俗易懂地告诉你什么是java8中的“函数式接口”

时间:2020-01-17 20:43:12

相关推荐

必看:通俗易懂地告诉你什么是java8中的“函数式接口”

花10分钟认真的看完一篇文章,或许会有意想不到的收获

java8发布已经好几年了,相信很多小伙伴都使用过java8,java8这版本带来了很多新特性,其中一个就是“函数式接口”,今天我们就一起来看看什么是函数式接口

废话少说,先看定义!

01

定义

函数式接口在java中是指:有且仅有一个抽象方法的接口函数式接口,即适用于函数式编程场景的接口。而java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。

看完这个定义我们就能感觉到,函数式接口和Lambda表达式是分不开的,所以还不知道什么是Lambda表达式的小伙伴需要先去学习一下,可以看一下我的上一篇文章,对Lambda表达式有详细的讲解,下面所有的讲解都需要具备Lambda表达式的知识。

说完了定义我们来看看java源码中是如何定义一个函数式接口的

这个Runnable接口就是一个函数式接口,只有一个抽象方法。并且函数式接口都用@FunctionalInterface注解进行标注了,当一个接口打上@FunctionalInterface注解之后就声明为一个函数式接口,这个接口中就只能有一个抽象方法,大于一个抽象方法就会报错。

02

内置“四大函数式接口”

为了让大家了解为什么要内置函数式接口,我们先自己定义几个函数式接口

看完我们自定义的几个函数式接口,大家会发现其实这几个接口都差不多,不同的地方就是返回类型、参数类型、参数个数

所以,为了方便大家的使用java8中内置了很多函数式接口,其中最重要的有四个,分别如下:

1、Predicate函数式接口

Predicate是一个断言型接口,用于做判断操作,所以抽象方法返回的是Boolean

源码:

例子:

2、Function函数式接口

Function接口为函数型接口,该接口的抽象方法接收一个参数并且做一些处理然后返回

源码:

例子:

3、Consumer函数式接口

Consumer是消费型接口。Consumer表示执行在单个参数上面的操作,但没有返回值的(正如消费有去无回)

源码:

例子:

4、Supplier函数式接口

Supplier接口为供给型接口。该接口不接受任何参数,返回一个任意泛型的值

源码:

例子:

可以发现,这四个内置基本可以满足我们大部分的需要了,当然如果你还有其他需求,java8中还有其他的一些内置的函数式接口供你使用,或者你可以自定义函数式接口

03

总结

1、函数式接口是为了方便Lambda的使用才产生的

3、java8提供的一些内置函数式接口能满足我们大部分的需求

2、java8的源码设计中很多地方也用到了内置的函数式接口

例如这个forEach方法

关注我每天我们一起进步

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。