Lambda表达式

Lambda表达式

标准格式由三部分组成:

一些参数

一个箭头

一段代码

即:(参数类型 参数名称)->{ 一些重写方法的代码 }

格式说明:

():接口中的抽象方法的参数列表;无参数则留空;多个参数则用逗号分隔

-> : 传递的意思,把参数传递给方法体{}

{} : 重写的抽象方法的方法体

1、无参的应用案例

public interface Cook {
  public abstract void makeFood();
}
public class LambdaDemo07 {
  public static void main(String[] args) {
      //调用invokeCook方法,参数是cook接口,传递cook接口的匿名内部类对象
      invokeCook(()->{
          System.out.println("我爱做饭饭");
      });
  }
  //定义一个方法,参数传递cook接口,方法内部调用cook接口中的方法makefood
  public static void invokeCook(Cook cook){
      cook.makeFood();
  }
}

2、有参有返回值案例1

public class Person {
  private String name;
  private Integer age;

  public Person() {
  }

  public Person(String name, Integer age) {
      this.name = name;
      this.age = age;
  }

  public String getName() {
      return name;
  }

  public void setName(String name) {
      this.name = name;
  }

  public Integer getAge() {
      return age;
  }

  public void setAge(Integer age) {
      this.age = age;
  }

  @Override
  public String toString() {
      return "Person{" +
              "name='" + name + '\'' +
              ", age=" + age +
              '}';
  }
}
public class Demo08Arrays {
  public static void main(String[] args) {
      Person[] arr = {
              new Person("aa",19),
              new Person("bb",27),
              new Person("cc",24)
      };

      Arrays.sort(arr,(Person o1, Person o2)->{
          return o1.getAge()-o2.getAge();
      });

      for (Person person : arr) {
          System.out.println(person);
      }
  }
}

2、有参有返回值案例2

public interface Calculator {
  public abstract int calc(int a,int b);
}
public class Demo09Main {
  public static void main(String[] args) {
      /*invokeCalc(2, 3, new Calculator() {
          @Override
          public int calc(int a, int b) {
              return a+b;
          }
      });*/
      invokeCalc(2, 3,(int a, int b)->{return a+b;});
  }
  private static void invokeCalc(int a,int b,Calculator calculator){
      int result = calculator.calc(a, b);
      System.out.println("结果是"+result);
  }
}

image-20200506000714066

image-20200506000946605

 

posted @ 2020-05-06 00:13  半颗桃核  阅读(98)  评论(0编辑  收藏  举报