前言:
眼前各位老铁们对“java 函数式接口详解”大概比较注重,各位老铁们都想要学习一些“java 函数式接口详解”的相关内容。那么小编也在网络上网罗了一些关于“java 函数式接口详解””的相关资讯,希望同学们能喜欢,我们快快来学习一下吧!提到函数式编程我们首先需要了解的就是函数式接口,我们之前讲解的Lambda 表达式的主要服务对象就是函数式接口了。
所以这章我们就来认识下函数式接口:
1. 函数式接口的定义
在java中函数式接口(Functional Interface)指的是只能有一个抽象方法但是可以有多个非抽象方法的接口。
函数式接口上一般会有@FunctionalInterface 修饰,但是不是必须的。
@FunctionalInterface 主要是为了更好地让编译器检查当前接口是否是函数式接口。
例如:线程的Runnable接口就是一个函数式接口。
如下图所示:
函数式接口可以很友好地使用Lambda进行实例化。
2. JDK8提供的函数式接口
JDK8之前Java中就提供了一些函数式接口,例如我们上面看到的Runnable接口,除次之外还有:
线程实现—Callable接口比较器—Comparator动态代理—InvocationHandler文件过滤—FileFilter...
JDK8新增了很多的函数式接口,都放到了java.util.function包下,其中最常用的接口为:
Function
该接口表示接收一个类型T,返回一个结果类型R。
Consumer
该接口表示消费一个类型T进行处理,并且无结果返回。
使用如下:
Supplier
该接口表示不传入类型,只对外供给一个T类型的实例对象。
使用如下:
Predicat
该接口表示对一个类型T进行判断,最终返回一个boolean结果。
使用如下:
标签: #java 函数式接口详解