举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > javalambda表达式用法 Java Lambda表达式上下文

javalambda表达式用法 Java Lambda表达式上下文

2023-05-23 05:18 Java教程

javalambda表达式用法 Java Lambda表达式上下文

javalambda表达式用法

Java Lambda表达式是Java 8中引入的一种新的语法,它可以让你在不创建一个新的函数或者类的情况下,使用函数式编程。它可以帮助你更快地实现功能,并且更加简洁。

Lambda表达式有三个部分:参数列表、箭头和函数体。参数列表是一个由逗号分隔的参数名称列表,它们将传递给函数体。 箭头是一个连字符(-),它将参数列表和函数体连接起来。 函数体是要执行的代码块。

// Lambda 表达式样例 
(int x, int y) -> { 
   return x + y; 
} 

Lambda表达式有很多用法,其中最常用的就是使用Lambda来代替匿名内部类。例如:

 
// 在 Java 8 之前使用匿名内部类来实例化 Runnable 接口  
Runnable r = new Runnable(){  

   @Override  
   public void run(){  

      System.out.println("Hello World!");  

   }  
};    // 在 Java 8 中使用 Lambda 表达式来实例化 Runnable 接口    Runnable r1 = () -> System.out.println("Hello World!");    

此外,Lambda表达式还可以用于集合API中的Stream API、Optional API、Date/Time API和I/O API中。例如:

 // Stream API 示例 List<String> list = Arrays.asList("a", "b", "c"); list.stream().forEach(s -> System.out.println(s)); // Optional API 示例 Optional<String> optional = Optional.ofNullable("hello"); optional.ifPresent(s -> System.out.println(s)); // Date/Time API 示例 LocalDateTime now = LocalDateTime.now(); now.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)).plusDays(1).plusMonths(1).minusYears(2); // I/O API 示例 Files.list(Paths.get(".")).forEach(path -> System.out.println(path)); 

总之,Java Lambda表达式是一个非常有用的工具,能够大大提高代码的可读性和易用性。因此,学习并使用Lambda表达式对于Java开发者来说是非常重要的。

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

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

阅读全文
以上是编程学为你收集整理的javalambda表达式用法 Java Lambda表达式上下文全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部