初看Java8新特性-Lambda表达式的语法规则
来源:互联网 发布:蓝牙聊天软件 编辑:程序博客网 时间:2024/05/22 05:28
前言
前面只是很零碎的举了一些有关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表达式又怎样选取呢?
要想解决这个疑问,我们要引入一个概念 函数式接口!
什么是函数式接口?
简单来说就是该接口只有一个抽象方法!
而Lambda表达式支持的接口都是函数式接口!所以,就不存在一个接口中有多个抽象方法了!
注:可以使用@FunctionInterface
注解来修饰函数式接口,这样当这个接口有超过一个抽象方法的时候程序就会报错了!
阅读全文
0 0
- 初看Java8新特性-Lambda表达式的语法规则
- 初看Java8新特性-Lambda表达式(一)
- 初看Java8新特性-Lambda表达式(二)
- java8新特性Lambda表达式
- java8新特性--lambda表达式
- Java8新特性 - lambda表达式
- java8新特性-lambda表达式
- java8新特性lambda表达式
- Java8新特性Lambda表达式
- Java8新特性Lambda表达式
- Java8新特性 lambda表达式
- Java8 新特性Lambda表达式
- Java8新特性--Lambda表达式
- java8 新特性-Lambda 表达式
- [Java]Java8新特性-lambda表达式/语法/函数式接口
- Java8:新特性之Lambda基础语法
- Java8新特性——Lambda表达式
- Java8新特性——lambda表达式
- 深入理解 java I/O
- sphinx rt ,实时索引,sphinx.conf配置事例
- 安卓自定义View进阶-MotionEvent详解
- 部分mongodb应用知识
- 深夜食堂:加班码代码太烧脑_你最爱哪种加班美食?
- 初看Java8新特性-Lambda表达式的语法规则
- osg 相机坐标系
- 认识自我
- 分布式理论之一:Paxos算法的通俗理解
- Java笔试题解-流程控制(3)
- Java访问权限修饰词
- 彻底解决Spring MVC 中文乱码 问题
- 【排序算法】 快速排序 quick sort(交换类排序)
- While emitting IR SIL function @_TFC21EncryptedMemo_Project14EMPassManageVC9initViewsfT_T_ for 'init