千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > Java编程技术分享:Lambda表达式之函数式接口

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

来源:千锋教育
发布人:千锋老师
时间: 2018-07-10 14:25:00 1531203900

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

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT