Lambda表达式的使用

Lambda表达式

1.Lambda使用前提

  • 有一个接口,且接口有且仅有一个抽象方法

2.需求:给定一个动物名称,重写eat()方法,在控制台输出

  • 完整代码可以直接复制过去运行看结果

  • 方式一:匿名内部类
    • 定义一个接口,里面有一个抽象方法,且需要一个字符串类型的形参

      interface Animal {
          void eat(String name);
      }
      
    • 主方法定义一个方法,方法的形参是接口类型

      //定义一个方法,形参是:Animal接口类性和String字符串类型
          private static void useAnimal(Animal a, String name) {
              a.eat(name);
          }
      
    • 使用匿名内部类的方式在主方法调用useAnimal方法

      public class LambdaDemo1 {
          public static void main(String[] args) {
               String tomName = "Tom";
              useAnimal(new Animal() {
                  @Override
                  public void eat(String name) {
                      System.out.println(name + "在捉杰瑞");//控制台输出:Tom在捉杰瑞
                  }
              }, tomName);
          }
      }
      
    • 完整代码:可以直接复制运行(注意修改类型:即将LambdaDemo1改成你创建类的名称)

      public class LambdaDemo1 {
          public static void main(String[] args) {
               String tomName = "Tom";
              useAnimal(new Animal() {
                  @Override
                  public void eat(String name) {
                      System.out.println(name + "在捉杰瑞");//控制台输出:Tom在捉杰瑞
                  }
              }, tomName);
          }
           private static void useAnimal(Animal a, String name) {
              a.eat(name);
          }
      }
      
    • 结果输出:Tom在捉杰瑞

  • 方式二:Lambda表达式
    • 完整代码:可以直接复制运行(注意修改类型:即将LambdaDemo1改成你创建类的名称)
     public class LambdaDemo1 {
         public static void main(String[] args) {
             //给定一个动物的名称
             String tomName = "Tom";
             //这是Lambda表达式
             useAnimal((String name) -> {
                 System.out.println(name+ "在捉杰瑞");//Tom在捉杰瑞
             },tomName);
         }
         private static void useAnimal(Animal a, String name) {
             a.eat(name);
         }
     }
     interface Animal {
         void eat(String name);
     }
    
    • 结果输出:Tom在捉杰瑞
  • 方式三:Lambda表达式改进
    • 完整代码:可以直接复制运行(注意修改类型:即将LambdaDemo1改成你创建类的名称)

      public class LambdaDemo1 {
        public static void main(String[] args) {
            //给定一个动物的名称
            String tomName = "Tom";
            //这是最简Lambda表达式
            useAnimal(name -> System.out.println(name+ "在捉杰瑞"),tomName);//Tom在捉杰瑞
        }
        private static void useAnimal(Animal a, String name) {
            a.eat(name);
        }
      }
      interface Animal {
        void eat(String name);
      }
      
    • 结果输出:Tom在捉杰瑞

3.分析

  • 匿名内部类

在这里插入图片描述

  • Lambda表达式

在这里插入图片描述

  • Lambda表达式改进

在这里插入图片描述

4.总结

  • 匿名内部类。 优点:可读性高;缺点:代码量多
  • Lambda表达式。优点:代码量少;缺点:可读性低
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值