Java8 Lamda表达式初体验

Java8 Lamda表达式初体验

  • Java8 Lamda表达式初体验
    • Lamda语法
      • 标准语法
      • 简化语法1
        • 参数类型可以省略
      • 简化语法2当lamda表达式参数只有一个可以省略小括号
      • 简化语法3当lamda表达式只包含一条语句
      • 方法引用Method reference和构造器引用Construct reference
        • 方法引用
        • 构造器引用

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)

你可能感兴趣的:(java,java,lamda)