zoukankan      html  css  js  c++  java
  • java8 lamda快速入门

    Lambda语法详解

    我们在此抽象一下lambda表达式的一般语法:

    1 (Type1 param1, Type2 param2, ..., TypeN paramN) -> {
    2   statment1;
    3   statment2;
    4   //.............
    5   return statmentM;
    6 }

    从lambda表达式的一般语法可以看出来,还是挺符合上面给出的非精确版本的定义–“一段带有输入参数的可执行语句块”。

    上面的lambda表达式语法可以认为是最全的版本,写起来还是稍稍有些繁琐。别着急,下面陆续介绍一下lambda表达式的各种简化版:

    1. 参数类型省略–绝大多数情况,编译器都可以从上下文环境中推断出lambda表达式的参数类型。这样lambda表达式就变成了:

    1 (param1,param2, ..., paramN) -> {
    2   statment1;
    3   statment2;
    4   //.............
    5   return statmentM;
    6 }

    所以我们最开始的例子就变成了(省略了List的创建):

    1 List<String> lowercaseNames = names.stream().map((name) -> {return name.toLowerCase();}).collect(Collectors.toList());

    2. 当lambda表达式的参数个数只有一个,可以省略小括号。lambda表达式简写为:

    1 param1 -> {
    2   statment1;
    3   statment2;
    4   //.............
    5   return statmentM;
    6 }

    所以最开始的例子再次简化为:

    1 List<String> lowercaseNames = names.stream().map(name -> {return name.toLowerCase();}).collect(Collectors.toList());

    3. 当lambda表达式只包含一条语句时,可以省略大括号、return和语句结尾的分号。lambda表达式简化为:

    1 param1 -> statment

    所以最开始的例子再次简化为:

    1 List<String> lowercaseNames = names.stream().map(name -> name.toLowerCase()).collect(Collectors.toList());

    4. 使用Method Reference(具体语法后面介绍)

    1 //注意,这段代码在Idea 13.0.2中显示有错误,但是可以正常运行
    2 List<String> lowercaseNames = names.stream().map(String::toLowerCase).collect(Collectors.toList());

    方法引用有很多种,它们的语法如下:

    • 静态方法引用:ClassName::methodName
    • 实例上的实例方法引用:instanceReference::methodName
    • 超类上的实例方法引用:super::methodName
    • 类型上的实例方法引用:ClassName::methodName
    • 构造方法引用:Class::new
    • 数组构造方法引用:TypeName[]::new

    参考文献:

    【1】http://ifeve.com/lambda/

  • 相关阅读:
    模拟循环单击事件实现layout中间panel全屏
    easyui tree自定义属性用法
    jquery给动态添加的dom元素绑定事件
    基于easyui fom分组插件
    ubuntu adb 安装
    vim状态保存跟恢复
    ubuntu-删除内核
    u盘安装14.04ubuntu系统
    findFocus-获得拥有焦点的控件
    xml中控件调用构造方法
  • 原文地址:https://www.cnblogs.com/davidwang456/p/6180819.html
Copyright © 2011-2022 走看看