2.1 概述

Lambda 是JDK8中一个语法糖,他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现,让我们不用关注是什么对象,而是更关注我们对数据就行了什么操作。

2.2 核心原则

可推导课可省略

2.3 基本格式

  1. (参数列表)->{代码}

例一

我们在创建线程并启动时,可以使用匿名内部类的写法:

  1. public class Demo01 {
  2. public static void main(String[] args) {
  3. new Thread(new Runnable() {
  4. @Override
  5. public void run() {
  6. System.out.println("我亦无他,惟手熟尔。");
  7. }
  8. }).start();
  9. }
  10. }

可以使用Lambda的格式对其进行修改,修改后如下:

  1. public class Demo01 {
  2. public static void main(String[] args) {
  3. new Thread(()->{
  4. System.out.println("我亦无他,惟手熟尔。");
  5. }).start();
  6. }
  7. }

例二

现有方法定义如下,其中intBinaryOperator 是一个接口,先使用匿名内部类的写法调用该方法。

  1. public class Demo02 {
  2. public static void main(String[] args) {
  3. calculateNum(new IntBinaryOperator() {
  4. @Override
  5. public int applyAsInt(int left, int right) {
  6. return left+right;
  7. }
  8. });
  9. }
  10. public static int calculateNum(IntBinaryOperator operator){
  11. int a=10;
  12. int b=20;
  13. return operator.applyAsInt(a,b);
  14. }
  15. }

Lambda写法:

  1. public class Demo02 {
  2. public static void main(String[] args) {
  3. calculateNum((a, b) -> {return a + b;});
  4. }
  5. public static int calculateNum(IntBinaryOperator operator){
  6. int a=10;
  7. int b=20;
  8. return operator.applyAsInt(a,b);
  9. }
  10. }