Java Lambda表達(dá)式作用域

2018-03-18 14:38 更新

Java Lambda表達(dá)式作用域


lambda表達(dá)式不定義自己的范圍。

如果我們?cè)趌ambda中使用關(guān)鍵字 this super 表達(dá)式在方法中,它們的行為與我們?cè)谠摲椒ㄖ惺褂盟鼈円粯印?/p>

例子

以下代碼從lambda表達(dá)式輸出this。這在lambda表達(dá)式中是指外部類(lèi)不是lambda表達(dá)式本身。

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();
  }
}

上面的代碼生成以下結(jié)果。



例2

Main方法中的第一行具有 x 的變量定義。

如果我們刪除注釋?zhuān)覀儠?huì)得到編譯時(shí)錯(cuò)誤,因?yàn)樗clambda表達(dá)式的變量定義沖突。

這是另一個(gè)演示,顯示lambda表達(dá)式與其外部方法具有相同的范圍。 lambda表達(dá)式不會(huì)創(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();
  }
}

上面的代碼生成以下結(jié)果。



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)