Java Lambda表达式上下文

Java Lambda表达式上下文

lambda表达式可以只在以下四种环境中使用。

  • 赋值上下文
  • 方法调用上下文
  • 返回上下文
  • 转换上下文

赋值上下文

lambda表达式可以显示在赋值运算符的右侧。

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

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


方法调用上下文

我们可以使用lambda表达式作为方法或构造函数的参数。

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

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

返回上下文

我们可以在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);
}

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

转换上下文

我们可以使用一个lambda表达式前面加一个cast。在转换中指定的类型是其目标类型。

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

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

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Java Lambda表达式上下文》
文章链接:https://zhuji.vsping.com/294185.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。