首页 > 编程语言 > 详细

Java8新特性---lambda表达式

时间:2021-06-06 21:17:28      阅读:19      评论:0      收藏:0      [点我收藏+]

可以把Lambda 表达式理解为一种简洁的可传递匿名函数:它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表。

不使用lambda表达式:

Comparator<Apple> byWeight = new Comparator<Apple>() {
   public int compare(Apple a1, Apple a2){
     return a1.getWeight().compareTo(a2.getWeight());
   }
};

使用lambda表达式:

Comparator<Apple> byWeight =
  (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight());

 可见Lambda 表达式让你可以简洁地传递代码,其基本语法如下:

(parameters) -> expression
或
(parameters) ->{ statements; } 

  用法示例:

布尔表达式          (List<String> list) -> list.isEmpty()
创建对象          () -> new Apple(10)
消费一个对象        (Apple a) -> {
                System.out.println(a.getWeight());
             }
从一个对象中选择/抽取  (String s) -> s.length()
组合两个值         (int a, int b) -> a * b
比较两个对象       (Apple a1, Apple a2) ->
               a1.getWeight().compareTo(a2.getWeight())

在函数式接口上使用Lambda 表达式:函数式接口就是只定义一个抽象方法的接口

只有在接受函数式接口的地方才可以使用Lambda 表达式

例如:

public interface Comparator<T> {
  int compare(T o1, T o2);
}
public interface Runnable {
  void run();
}

  用匿名内部类也可以完成同样的事情,但lambda更简洁

 

Runnable r1 = () -> System.out.println("Hello World 1");                 // lambda
Runnable r2 = new Runnable(){               // 匿名类
  public void run(){
    System.out.println("Hello World 2");
  }
};
public static void process(Runnable r){
  r.run();
}
process(r1);
process(r2);
process(() -> System.out.println("Hello World 3"));      //直接传递的Lambda

  

Java8新特性---lambda表达式

原文:https://www.cnblogs.com/superkuan/p/14855638.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!