什么是函数型接口
首先,让我们来看看如何创建传统线程
看看使用函数型接口的写法吧
thread T2=new thread ((-system.out.println ) ) T2 ); T2 .开始(;
Runnable接口是用于查看Runnable源代码的函数型接口,因此可以使用Lambda表达式直接编写。
@ functionalinterfacepublicinterfacerunnable { publicabstractvoidrun (; }
发现此接口具有函数类型接口的定义注释: @FunctionalInterface指示此接口是函数类型接口。
@ documented @ retention (retention policy.runtime ) target ) elementtype.type ) public @ interfacefunctional interface {
除了Runnbale接口外,JDK8还将Comparator、Callable等接口定义为函数型接口,并对此进行了注释。
内置函数型接口
JDK8提供了几个内置函数接口,许多API都使用它来满足大多数APP应用程序。
自定义函数型接口
1、定制函数型接口
@ functionalinterfacepublicinterfacecalcinterfacen,v { v操作(nn1,Nn2 ); }
这里只有一种抽象的方法。 @FunctionalInterface评论可以不写,为什么可以往下看?
2、新建引用函数型接口的类
3、测试函数型接口
最终输出:
2313023130
函数型接口规格
1,@FunctionalInterface被标识为一个函数类型接口,只能在只有一个抽象方法的接口中使用。
2、接口的静态方法、缺省方法和覆盖Object类的方法不是抽象方法。
3,@FunctionalInterface注释不是必需的。 如果接口中只有一个抽象方法可以不写,则默认情况下,它符合函数接口,但建议您写所有注释。 编译器将检查该接口是否符合函数型接口的规范。
举例说明
正确的函数型接口。
@ functionalinterfacepublicinterfacecalcinterfacen,v { v操作(nn1,Nn2 ); }
可以添加几个符合函数表达式的方法。 编译器也不报告错误。
这没有使用@FunctionalInterface函数类型接口。 有两个抽象方法,不能用于Lambda表达式。
publicinterfaceCalcInterfaceN,v { v操作(nn1,Nn2 ); v操作2 (nn1、Nn2 ); }
使用具有这两个抽象方法的@FunctionalInterface注释编译函数型接口将报告错误。
@ functionalinterfacepublicinterfacecalcinterfacen,v { v操作(nn1,Nn2 ); v操作2 (nn1、Nn2 ); }
这没有抽象的方法,编译后报告错误。
publicinterfaceCalcInterfaceN,V{}
推荐的书籍
Spring Cloud微服务实战
由JavaEE开发的顶级选手Spring Boot实战
快速构建SpringBoot暴露微服务体系
SpringBoot实战
熟悉Spring 4.x企业APP应用开发实战
所有高清电子书下载请到274435854组。
建议您阅读
2017年,推荐10本Java程序猴子经典良书
高级Java必看的10本书
Java架构师一定要读的十本书
看完有收获吗? 分享到朋友圈给更多的人吧。
架构之路、顶级精选、每日干货,喜欢就关注收藏吧!