全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

Java编程技术分享:Lambda表达式之函数式接口

发布时间:2018-07-10 14:25:00
发布人:千锋老师

  函数式接口(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的 函数式编程,该包中的函数式接口有:

1

2

3

4

5

6

7

  //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视频教程,让学员能够更好的巩固基础技术能力。

相关文章

服务器和电脑主机有什么区别?

服务器和电脑主机有什么区别?

2023-10-14
C#有什么实用的第三方库吗?

C#有什么实用的第三方库吗?

2023-10-14
边缘计算跟云计算是什么关系?

边缘计算跟云计算是什么关系?

2023-10-14
Java中的接口到底是什么?

Java中的接口到底是什么?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取