码迷,mamicode.com
首页 > 其他好文 > 详细

Lambda表达式

时间:2020-05-06 01:13:05      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:system   this   load   参数类型   model   分组   image   for   方法   

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

技术图片

技术图片

 

Lambda表达式

标签:system   this   load   参数类型   model   分组   image   for   方法   

原文地址:https://www.cnblogs.com/lxy522/p/12833895.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!