Lambda表达式的学习

Lambda

函数式接口:

  1. 任何接口,如果只包含唯一一个抽象方法,他就是一个函数式接口。

  2. 函数式接口可以通过Lambda表达式来创建该接口的对象。

关于Lambda表达式,解决的就是函数式接口的需要采用大量复杂的代码,尤其见于线程的使用


 

首先是采用外部类:

public class Lambda {
   public static void main(String[] args) {
      //要实现接口首先要实例化一个外部类,然后实现
       LeiAi leiAi = new LeiAi();
       leiAi.like("苹果");
  }
}

//定义一个外部类实现ILike接口
class LeiAi implements ILike{

   @Override
   public void like(String food) {
       System.out.println("我喜欢吃--->"+food);
  }
}

//接口
interface ILike{
   void like(String food);
}

结果:

![image-20211117195132848](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195132848.png)

接着使用静态内部类:

ublic class Lambda {

   static class LeiAI implements ILike{

       @Override
       public void like(String food) {
           System.out.println("我喜欢吃--->"+food);
      }
  }

   public static void main(String[] args) {
       LeiAI leiAI = new LeiAI();
       leiAI.like("梨");
  }
}

interface ILike{
   void like(String food);
}

结果:

![image-20211117195216136](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195216136.png)

局部内部类:

public class Lambda {


   public static void main(String[] args) {
      //创建局部内部类实现
       class LeiAI implements ILike{
           @Override
           public void like(String food) {
               System.out.println("我喜欢吃--->"+food);
          }
      }
       
       new LeiAI().like("葡萄");
  }
}

interface ILike{
   void like(String food);
}

 

结果

![image-20211117195540519](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195540519.png)

匿名内部类

public class Lambda {


   public static void main(String[] args) {
       new ILike() {
           @Override
           public void like(String food) {
               System.out.println("我喜欢吃--->" + food);
          }
      }.like("柿子");
  }
}

interface ILike{
   void like(String food);
}

结果:

![image-20211117195926630](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195926630.png)

lambda

public class Lambda {


   public static void main(String[] args) {
       ILike iLike = (String food)->{
           System.out.println("我喜欢吃--->"+ food);
      };
       
       iLike.like("西瓜");
  }
}

interface ILike{
   void like(String food);
}

结果:

![image-20211117200551628](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117200551628.png)

更加简化的Lambda


public class Lambda {


   public static void main(String[] args) {
       ILike iLike = food-> System.out.println("我喜欢吃--->"+ food);

       iLike.like("榴莲");
  }
}

interface ILike{
   void like(String food);
}

其中参数的类型可以全部去掉,但是必须加上括号,只有一句语句才可以去除语法块中的{}

Lambda在Android中的使用十分广泛,所以还有一系列内部类的使用也都比较晦涩难懂,一步一个脚印。

 

posted @ 2021-11-17 20:13  码虫垒起代码之城  阅读(51)  评论(0编辑  收藏  举报