Java Lambda表達式上下文

2018-03-18 17:24 更新

Java Lambda表達式上下文


lambda表達式可以只在以下四種環(huán)境中使用。

  • 賦值上下文
  • 方法調(diào)用上下文
  • 返回上下文
  • 轉(zhuǎn)換上下文

賦值上下文

lambda表達式可以顯示在賦值運算符的右側(cè)。

public class Main {
  public static void main(String[] argv) {
    Calculator iCal = (x,y)-> x + y;
    System.out.println(iCal.calculate(1, 2));
  }
}

@FunctionalInterface
interface Calculator{
  int calculate(int x, int y);
}

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


方法調(diào)用上下文

我們可以使用lambda表達式作為方法或構(gòu)造函數(shù)的參數(shù)。

public class Main {
  public static void main(String[] argv) {
    engine((x,y)-> x / y);
  }
  private static void engine(Calculator calculator){
    long x = 2, y = 4;
    long result = calculator.calculate(x,y);
    System.out.println(result);
  }  
}

@FunctionalInterface
interface Calculator{
  long calculate(long x, long y);
}

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

返回上下文

我們可以在return語句中使用lambda表達式,其目標類型在方法返回類型中聲明。

public class Main {
  public static void main(String[] argv) {
    System.out.println(create().calculate(2, 2));
  }
  private static Calculator create(){
    return (x,y)-> x / y;
  }  
}

@FunctionalInterface
interface Calculator{
  long calculate(long x, long y);
}

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

轉(zhuǎn)換上下文

我們可以使用一個lambda表達式前面加一個cast。在轉(zhuǎn)換中指定的類型是其目標類型。

public class Main {
  public static void main(String[] argv) {
    engine((IntCalculator) ((x,y)-> x + y));
  }
  private static void engine(IntCalculator calculator){
    int x = 2, y = 4;
    int result = calculator.calculate(x,y);
    System.out.println(result);
  }
  private static void engine(LongCalculator calculator){
    long x = 2, y = 4;
    long result = calculator.calculate(x,y);
    System.out.println(result);
  }  
}

@FunctionalInterface
interface IntCalculator{
  int calculate(int x, int y);
}

@FunctionalInterface
interface LongCalculator{
  long calculate(long x, long y);
}

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號