博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java8-lambda表达式
阅读量:6901 次
发布时间:2019-06-27

本文共 1588 字,大约阅读时间需要 5 分钟。

lambda表达式,允许函数将另一个函数作为参数传入。

第一次听到lambda表达式,我想到的是原来js的回调函数写法,当然现在js的回调好像用得已经不多,es6之后大家更多采用的是Promise的写法。接下来看看lambda表达式具体怎么写。

/** * 允许把函数作为一个方法的参数(函数作为参数传递进方法中 */public class Lambda {    public static void main(String[] args) {        log("10 + 5 = " + curOperate(10, 5, addition));        log("10 - 5 = " + curOperate(10, 5, subtraction));        log("10 x 5 = " + curOperate(10, 5, multiplication));        log("10 / 5 = " + curOperate(10, 5, division));    }    private static void log(String s) {        System.out.println(s);    }    interface MathOperation {        int operation(int a, int b);    }    /**     * 入参不用类型声明     */    static MathOperation subtraction = (a, b) -> a - b;    /**     * 入参用类型声明     */    static MathOperation addition = (int a, int b) -> a + b;    /**     * 返回值放到大括号里面     */    static MathOperation multiplication = (int a, int b) -> {        return a * b;    };    /**     * 返回值不放到大括号,直接返回     */    static MathOperation division = (int a, int b) -> a / b;    private static int curOperate(int a, int b, MathOperation mathOperation) {        return mathOperation.operation(a, b);    }}

先讲一下MathOperate这个接口。我们看到MathOperation有一个方法:operate。其入参是两个int类型的参数,返回值也是int类型。那么我们再当前类里面给出了operation的4个实现。这4个实现的写法也是不同于java8之前接口的写法。之前我们可能会写一个继承接口的类,然后对方法进行实现。类似于下图

public interface MathOperation {    int operation(int a, int b);}

但是java8中,接口里面只有一个抽象方法的时候可以直接使用lambda映射到该方法。所以我们可以直接用一行代码写出一个实现。addition,substraction,multiplication,division是MathOperation的4个实现。

最后的curOperation为我们展示了接口的调用,结果就不展示了。Lambda应该说是一个语法糖,简化了部分代码量。

 

转载于:https://www.cnblogs.com/tuofan/p/10865043.html

你可能感兴趣的文章
JSON.stringify JSON.parse
查看>>
第三次作业
查看>>
13-标准文档流
查看>>
就业指导第三次作业
查看>>
vscode格式化设置
查看>>
接口测试工具-Jmeter使用笔记(五:正则表达式提取器)
查看>>
VBA-从周课表统计节次
查看>>
(二十三)控制转移指令
查看>>
编译时设置动态链接库路径
查看>>
Java基础代码库:ACM的A+B问题
查看>>
日志分析工具ELK(二)
查看>>
js中eval详解
查看>>
软件设计
查看>>
HDU 5753 Permutation Bo
查看>>
【问题集】VS新建项目——失败——弹出“未将对象引用设置到对象的实例”...
查看>>
blog.yiz96.com
查看>>
centos 创建桌面双击启动程序(更改图标)
查看>>
jq 的grep(); 数组筛选方法
查看>>
[BZOJ] 1059: [ZJOI2007]矩阵游戏
查看>>
HTTP状态码
查看>>