zoukankan      html  css  js  c++  java
  • Java8 -> lumba表达式

    一、访问外部变量

    二、lumba表达式的this

    lunba中的this指的是声明它的外部对象,这与匿名内部类就不一样了,后者指向的是创建的这个匿名内部类

    三、方法引用(Method Reference)和构造器引用(Constructor Reference)

    • objectName::instanceMethod
    • ClassName::staticMethod
    • ClassName::instanceMethod
      其中前两种就是把lambda表达式的参数直接当成instanceMethod|staticMethod的参数来调用。比如System.out::println等同于x->System.out.println(x);Math::max等同于(x, y)->Math.max(x,y)。
      最后一种方式,等同于把lambda表达式的第一个参数当成instanceMethod的目标对象,其他剩余参数当成该方法的参数。比如String::toLowerCase等同于x->x.toLowerCase()
      构造器引用语法如下:ClassName::new,把lambda表达式的参数当成ClassName构造器的参数 。例如BigDecimal::new等同于x->new BigDecimal(x)。

    四、语法:

    (Type1 param1, Type2 param2, ..., TypeN paramN) -> {
      statment1;
      statment2;
      return statmentM;
    }

    如果参数类型可以推断省略TYPE,如果只有一个参数 省略() 如果只有一条语句省略{}和return以及;

    lumba表达式你可以看作是一个有输入参数的代码块,本质上是一个函数式接口的实现,也就说实际上可以认为lumba表达式是一个函数,一般可以作为函数的参数(函数式编程)。关于这个函数到底是什么类型的、实现的方法怎么调用都是编译器可以在具体环境下推断出来的

  • 相关阅读:
    BZOJ 4032: [HEOI2015]最短不公共子串 (dp*3 + SAM)
    后缀自动机详解!
    BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机 多串)
    BZOJ 3938 Robot
    [JSOI2008]Blue Mary开公司
    [ZJOI2017]树状数组
    [JSOI2015]非诚勿扰
    [HNOI2011]任务调度
    BZOJ 3680 吊打XXX
    POJ 3318 Matrix Multiplication
  • 原文地址:https://www.cnblogs.com/Coder-Pig/p/6780880.html
Copyright © 2011-2022 走看看