Java编程技术分享:Lambda表达式之函数式接口
函数式接口(Functional Interface) :任何接口,如果只包含唯一 一个抽象方法,那么它就是一个FI。(之前它们被称为 SAM类型,即 单抽象方法类型(Single Abstract Method))。接口中的方法默认就是public abstract的。
接口可能继承了一个 Object 已经提供的方法,比如 toString(),equals( )…这些都不属于函数式接口方法的范畴, 所以函数式接口中所说的方法不包括这些。
可以通过 @FunctionalInterface 注解来显式指定一个接口是函数式接口。加上这个注解,接口中函数式接口方法少于一个或者多余一个,编译器都会提示错误。
其实我们之前写的接口实例化就是函数式接口的实例化。
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
函数式接口可以被隐式转换为lambda表达式。
函数式接口可以现有的函数友好地支持 lambda。
JDK 1.8之前已有的函数式接口:
java.lang.Runnable
java.util.concurrent.Callable
java.security.PrivilegedAction
java.util.Comparator
java.io.FileFilter
java.nio.file.PathMatcher
java.lang.reflect.InvocationHandler
java.beans.PropertyChangeListener
java.awt.event.ActionListener
JDK 1.8 新增加的函数接口:
java.util.function
java.util.function 它包含了很多类,用来支持 Java的 函数式编程,该包中的函数式接口有:
//Predicate接口 代码示例:
@Test
public void test7(){
List list = Arrays.asList(11, 22, 33, 14, 15, 66, 7, 18, 19);
//Predicate接口 常用test方法 存在则 test 方法返回 true
Predicate predicate=n->n%2==1;
for(Integer i:list) {
if(predicate.test(i)){
System.out.println("奇数:"+i);
}
}
}
private int getSum(int n1, int n2, BiFunction biFunction){
return biFunction.apply(n1,n2);
}
//BiFunction 接受两个参数 返回一个结果
@Test
public void test8(){
System.out.println("求余数:"+getSum(13,3,(n1,n2)->n1%n2));
}
千锋Java培训作为中国IT研发人才一体化服务的开拓者,为学生制定合理有序的学习计划,2周免费试听不满意不收费,与学员签订就业协议,坚持良心面授,从千锋Java培训班出去的学员均已高薪就业。千锋推出的免费Java视频教程,让学员能够更好的巩固基础技术能力。

猜你喜欢LIKE
相关推荐HOT
更多>>
如何写出高质量Java代码?看看这篇高标准代码开发规范吧
新手在学习和开发过程中,不可避免的会发生一些莫名其妙的问题;凭习惯编写代码,后续再重构优化代码,重走旧路,延缓了开发能力的提高。无论哪...详情>>
2023-02-15 19:16:44
实战干货|Spring Boot整合MyBatis框架快速实现数据操作
在开发中,我们通常会对数据库的数据进行操作,Sprirng Boot对关系型数据库和非关系型数据库的访问操作都提供了非常好的整合支持。详情>>
2023-02-07 17:19:53
开发实操|微信支付流程图文详解
微信支付是腾讯集团旗下的第三方支付平台。微信支付为各类企业以及小微商户提供专业的收款能力,运营能力,资金结算解决方案,以及安全保障。用...详情>>
2023-01-18 14:22:55
带你玩转ssm项目 - 锋迷汽车管理
千锋科技针针对汽车做了管理系统,管理系统中不仅有客户的管理还有车辆租赁的管理,租赁车辆公司对于租车的流程,租车过程的问题,对于客户的维...详情>>
2023-01-18 11:47:47
一文带你快速入门Activiti7工作流引擎
之前接到过一个需求,为某公司内部系统设计一个工作流引擎来解决公司内部的各种自动化流程审批业务。当时,就在想,对于流程审批来说,每个申请...详情>>
2023-01-10 10:54:47Java培训问答更多>>
新Java行业疑惑解答:Java的内存管理是如何工作的?
新java script是什么?为什么要学java script
新java和大数据哪个好?未来哪个职业发展更好
新java培训班多久能学会?培训周期大概多久
新java script和java的区别有哪些?如何区分
新java script的数据类型主要有哪些?怎样学的更快
新c语言与java区别在哪里?去培训机构学哪个比较好
Java面试题库 更多>>
华为外包java面试题-Java实现单链表的逆序
Java程序员面试题
Java面试题及答案
什么是线程的上下文切换?
如何撤销已经推送(push)到远端仓库的提交(commit)信息?
你了解哪些加密算法?
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 南昌校区
- 哈尔滨校区
