初看Java8新特性-Lambda表达式的语法规则
2017-06-21 14:03
323 查看
前言
前面只是很零碎的举了一些有关Lambda表达式的例子,没有做一个系统的语法实例,这里将给出Lambda表达式的语法规则!语法规则
无参数,无返回值
程序实例://无参数 无返回值 @Test public void test1(){ Runnable r =()-> System.out.println("无参数 无返回值"); r.run(); }
输出结果:
无参数 无返回值
有单个参数,无返回值
程序实例://有单个参数 无返回值 @Test public void test2(){ Consumer<String> con=(str)->System.out.println(str); con.accept("有单个参数 无返回值"); }
输出结果:
有单个参数 无返回值
附加说明:
//这三种写法的效果是一样的 Consumer<String> con=str ->System.out.println(str); Consumer<String> con=(str)->System.out.println(str);//推荐使用这种 Consumer<String> con=(String str)->System.out.println(str);
有多个参数,Lambda体有多条语句,有返回值
程序实例://多个参数 Lambda体中有多条语句 有返回值 @Test public void test3(){ Comparator<Integer> com=(x,y)->{ System.out.println("多个参数 Lambda体中有多条语句 有返回值"); return Integer.compare(x, y); }; System.out.println(com.compare(2,1)); }
输出结果:
多个参数 Lambda体中有多条语句 有返回值 1
附加说明:
参数
(x,y)里面的类型可以加上变成
(Integer x,Integer y),不加上JVM会自动进行类型推断!(建议不用加)
有多个参数,Lambda体有一条语句,有返回值
程序实例://有多个参数,Lambda体有一条语句,有返回值 @Test public void test4(){ Comparator<Integer> com=(x,y)-> Integer.compare(x, y); System.out.println(com.compare(2,1)); }
输出结果:
1
附加说明:
如果Lambda体中只有一条返回语句,那么对应的
{}和
return都是可以不用写的!
最后说明
很多人刚开始了解Lambda表达式会有这样的疑问:如果一个接口有多个参数数目相同的方法,那我们的Lambda表达式又怎样选取呢?
要想解决这个疑问,我们要引入一个概念 函数式接口!
什么是函数式接口?
简单来说就
da07
是该接口只有一个抽象方法!
而Lambda表达式支持的接口都是函数式接口!所以,就不存在一个接口中有多个抽象方法了!
注:可以使用
@FunctionInterface注解来修饰函数式接口,这样当这个接口有超过一个抽象方法的时候程序就会报错了!
相关文章推荐
- Java 8新特性:lambda表达式
- Java 8新特性-3 Lambda 表达式
- JAVA8新特性(Lambda 表达式)
- Java 8新特性:新语法方法引用和Lambda表达式及全新的Stream API
- Java8 新特性之一---------Lambda表达式和函数式接口
- Java 8新特性:lambda表达式(四)转载总结
- Android Studio使用gradle-retrolambda支持Java8 新特性 Lambde表达式
- Java8特性详解 lambda表达式 Stream
- java8新特性之lambda表达式(一)
- java8新特性(拉姆达表达式lambda)
- java8新增特性(一)---Lambda表达式
- Java8 新特性----函数式接口,以及和Lambda表达式的关系
- Java 8 新特性:Lambda 表达式
- JAVA 新特性:lambda表达式
- Java8新特性——lambda表达式
- Java8新特性 - Lambda表达式 - 基本知识
- JAVA 1.8 新特性学习(2) lambda表达式
- Java 8 新特性:Lambda 表达式之方法引用(Lambda 表达式补充版)
- Java8新特性之Lambda表达式
- Java8 新特性之 Lambda 表达式