java1.8新特性之Lamda表达式
来源:互联网 发布:linux权限设置 编辑:程序博客网 时间:2024/05/18 14:45
Lamda属于函数式编程的概念,那么为什么需要函数式的编程呢?
如何要想清楚函数式编程的产生目的,那么我们必须通过匿名内部类来分析。
传统的内名内部类:
package com.wonglar.demo;interface IMessage{ public void print();}public class Demo { public static void main(String[] args) { fun(new IMessage() { @Override public void print() { System.out.println("Hello World !"); } }); } public static void fun(IMessage msg){ msg.print(); }}
实际上整个代码当中,我们最终需要的就是一个输出而已,由于java开发的结构性的完整要求,所以不得不在这个核心的语句上嵌套更多的内容。
以上的做法要求的实在过于严谨了,所以在java的1.8时代引入了函数式的编程,可以简化以上的代码。
使用Lamda表达式:
package com.wonglar.demo;interface IMessage{ public void print();}public class Demo { public static void main(String[] args) { fun(()->System.out.println("Hello World !")); } public static void fun(IMessage msg){ msg.print(); }}
整个的操作里面匿名内部类只是进行了一行语句的输出,所以使用了Lamda表达式可以非常轻松的实现要求。
对于Lamda语法有三种形式:
- (参数)->单行语句;
- (参数)->{单行语句};
- (参数)->表达式。
有参的单行语句:
package com.wonglar.demo;interface IMessage{ public void print(String str);}public class Demo { public static void main(String[] args) { //首先要定义此表达式需要接受的变量,单行语句直接进行输出。 fun((s)->System.out.println(s)); } public static void fun(IMessage msg){ msg.print("Hello World !"); }}
多行语句:
package com.wonglar.demo;interface IMessage{ public void print(String str);}public class Demo { public static void main(String[] args) { //首先要定义此表达式需要接受的变量,单行语句直接进行输出。 fun((s)->{ s = s.toUpperCase(); System.out.println(s); }); } public static void fun(IMessage msg){ msg.print("Hello World !"); }}
如果说现在代码里面只是一个简单的计算表达式,那么操作也可以很容易。
编写一个表达式:
package com.wonglar.demo;interface IMessage{ public int add(int x,int y);}public class Demo { public static void main(String[] args) { //首先要定义此表达式需要接受的变量,单行语句直接进行输出。 fun((num1,num2)->num1+num2); } public static void fun(IMessage msg){ System.out.println(msg.add(10,5)); }}
总结:
利用Lamda表达式最终解决的问题,避免了匿名内部类定义过多无用的操作。
0 0
- java1.8新特性之Lamda表达式
- java8新特性-Lamda表达式
- java8新特性-Lamda表达式
- Java1~8"新特性"
- JAVA1.8新特性
- java1.8新特性
- Java8新特性(二)------lamda表达式
- java1.8重要新特性
- java1.8 新特性 lambda
- Stream:java1.8新特性
- java1.8的新特性
- Stream:java1.8新特性
- java1.8新特性之接口定义增强
- Java基础--JDK1.8新特性-Lamda
- java1.5新特性之枚举
- java1.5新特性之枚举总结
- Java1.5新特性之注解
- Java1.5新特性之泛型
- Objective-C与JavaScript交互的那些事
- Zookeeper系列(九)Zookeeper开源客户端之ZKClient和Curator简介
- python 2.7 字符图网络
- Distribute Candies问题及解法
- Java基础--基本类型的互相转化
- java1.8新特性之Lamda表达式
- RN中点击切换颜色,点击另一个恢复原先颜色
- Android Studio修改项目包名
- 在国芯机顶盒ecos系统上实现dlna media server
- 新一代智能云网盘-百宝云企业版
- docker 原理之runc
- AWS CLI 的安装和使用
- stm32 中DMA的stream和channel关系
- Dynamic CRM 之联合查询实体间的数据