Lambda

作者: BHPam | 来源:发表于2018-07-03 10:58 被阅读0次

Lambda首先要了解接口函数和匿名函数这两个概念。

接口函数

接口函数指的是一个只包含一个抽象方法的接口(可以包含default方法和static方法),我们可以用注解@FunctionalInterface来标注一个接口函数,它会自动帮你检查这个接口是否满足接口函数的定义。

匿名函数

匿名函数指的是没有方法名的函数。
Runnable run = () -> {}/expression;
在->左边是参数,参数个数任意,可以不用写参数类型,如果只有一个参数可以省去括号;
->右边是要执行的代码,称为Lambda体

Lambda

具体的使用方法如下

  • 无参数无返回
Runnable run = () -> System.out.println();
new Thread(run).start();
  • 一个参数无返回
//after java8 we can find functional interface Consumer in java.util.function
Consumer<Integer> consumer = (a) -> System.out.println(a);
//accept is an abstract method in Interface Consumer
consumer.accept(a);
  • 有一个参数有返回值
Function<String,Integer> function = (a) -> {
  Integer value = Integer.parseInt(a);
  return value;
}
function.apply("2333");
  • 多个参数一个返回值
BiFunction<Integer,Integer,String> biFunction = (a,b) -> a+b+"";
biFunction.apply(1,2);

我们可以发现,Lambda的使用必需对应一个函数接口,如果每次使用Lambda都需要定义新的接口,那么就不能达到精简代码的目的。Java8提供了package java.util.function,里面有很多的函数接口可以直接使用。

相关文章

网友评论

      本文标题:Lambda

      本文链接:https://www.haomeiwen.com/subject/thbluftx.html