Java Lambda表达式作用域

2018-03-18 14:38 更新

Java Lambda表达式作用域


lambda表达式不定义自己的范围。

如果我们在lambda中使用关键字 this super 表达式在方法中,它们的行为与我们在该方法中使用它们一样。

例子

以下代码从lambda表达式输出this。这在lambda表达式中是指外部类不是lambda表达式本身。

import java.util.function.Function;

public class Main {
  public Main(){
    Function<String,String> func1 = x -> {System.out.println(this);return x ;};
    System.out.println(func1.apply(""));
  }
  public String toString(){
    return "Main";
  }
  public static void main(String[] argv) {
    new Main();
  }
}

上面的代码生成以下结果。



例2

Main方法中的第一行具有 x 的变量定义。

如果我们删除注释,我们会得到编译时错误,因为它与lambda表达式的变量定义冲突。

这是另一个演示,显示lambda表达式与其外部方法具有相同的范围。 lambda表达式不会创建自己的作用域。

import java.util.function.Function;

public class Main {
  public Main(){
    //int x= 0;
    Function<String,String> func1 = x -> {System.out.println(this);return x ;};
    System.out.println(func1.apply(""));
  }
  public String toString(){
    return "Main";
  }
  public static void main(String[] argv) {
    new Main();
  }
}

上面的代码生成以下结果。



以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号