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表達式不會創(chuàng)建自己的作用域。

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

公眾號
微信公眾號

編程獅公眾號