【第22期】观点:IT 行业加班,到底有没有价值?

Java8 Lamda表达式初体验

原创 2016年08月28日 15:43:15

Java8 Lamda表达式初体验

Lamda语法

标准语法

  • (Type1 param1, Type2 param2, …, TypeN paramN) -> (
    statment1;
    statment2;
    // …….
    stamentN;
    return something;

简化语法1

参数类型可以省略

lamda一般可以从上下文中推测推断参数类型,所以参数类型可以省略

  • (param1, param2, …, paramN) -> (
    statment1;
    statment2;
    // …….
    stamentN;
    return something;

简化语法2:当lamda表达式参数只有一个可以省略小括号

  • param -> (
    statment1;
    statment2;
    // …….
    stamentN;
    return something;

简化语法3:当lamda表达式只包含一条语句

可以省略大括号、return语句和分号

  • param1 -> statment

方法引用(Method reference)和构造器引用(Construct reference)

方法引用

  • objectName::instanceMethod
  • ClasssName::staticMethod
  • ClassName::instanceMethod

    前两种方式类似,等同于把lamda表达式的参数直接当作instanceMethod|staticMethod的参数来调用。
    例如:

System.out::printLn; // 等同于x -> System.out.println(x)
Math::max; // 等同于 (x,y) -> Math.max(x,y);

最后一种方式将第一个参数当作调用主体,其他参数当作方法的入参
例如:

String::toString; // 等同于 (x,y) -> x.toString(y);

构造器引用

  • 语法:ClassName::new

把lamda表达式的参数当作构造器的参数
例如

BigDecimal::new; //等同于x -> new BigDecimal(x)
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Java8初体验(一)lambda表达式语法

本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘。因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化。本文是该系列的第一篇,...
  • wauit
  • wauit
  • 2014-04-14 16:30
  • 487

使用 C# lamda 表达式写的两种递归函数

使用 C# lamda 表达式写的两种递归函数 //将一个平行数据,整理为一个树形数据 private void Test1(List<myType> allTypeList) { //查找父节点 List<myType> root...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

一句话说明白lamda表达式

lamda表达式 <p style="margin: 10px auto; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 14px; line-heigh

lamda (java 8) 表达式

实现Runnable线程案例 使用() -> {} 替代匿名类://Before Java 8: new Thread(new Runnable() { @Override pu...

java8 lamda表达式8案例

1. 实现Runnable线程案例 使用() -&gt; {} 替代匿名类:<
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)