Lamda表达式

发布时间 2023-08-24 17:10:45作者: Y~~~

Lamda表达式

1.为什么要用lamda表达式(函数式编程)
  1. 避免匿名内部类定义过多。

  2. 代码简洁。

  3. 去掉没有意义代码,只留下核心逻辑。

    new Thread (()->System.out.println("多线程学习")).start()
2.函数式接口定义:
  1. 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。

public interface Runnable {
   public abstract void run();
}

对于函数式接口,我们可有通过lamda表达式来创建接口对象。


public class TestLamda {

   // 静态内部类
   static  class Like2 implements ILike{
       @Override
       public void lamda() {
           System.out.println("i like lamda2");
      }
  }

   public static void main(String[] args) {
       ILike like = new Like();
       like.lamda();
       ILike like2 =new Like2();
       like2.lamda();
       // 局部内部类
       class Like3 implements ILike{
           @Override
           public void lamda() {
               System.out.println("i like lamda3");
          }
      }
       ILike like3 = new Like3();
       like3.lamda();
       // 匿名内部类
       like = new ILike(){
           public void lamda() {
               System.out.println("i like lamda4");
          }
      };
       like.lamda();

       // 用lamda简化
       like = () -> {
           System.out.println("i like lamda5");
      };
       like.lamda();
  }
}

// 定义一个函数式接口
interface ILike{
   void lamda();
}
class Like implements ILike{
   @Override
   public void lamda() {
       System.out.println("i like lamda");
  }
}
public class TestLamda2 {

   static class Love1 implements  ILove{
       @Override
       public void love(int a) {
           System.out.println("i love you2");
      }
  }

   public static void main(String[] args) {

       /**
        * // 1.lamda表达示简化
        *         ILove love = (int a) -> {
        *             System.out.println("i like you5");
        *         };
        *         love.love(1);
        *
        *         // 2.参数类型简化
        *         ILove love1 = (a) -> {
        *             System.out.println("i like you5");
        *         };
        *         love1.love(1);
        *
        *         // 3.简化括号
        *         ILove love2 = a -> {
        *             System.out.println("i like you5");
        *         };
        *         love2.love(1);
        *         // 4.简化大括号
        *         ILove love2 = a -> System.out.println("i like you5");
        *           love2.love(1);
        */

       // 总结
           // lamba表达式只能有一行代码情况下才能简化成一行,如果有多行就用代码块包裹。
           // 接口为函数式接口
           // 多个参数也可以去掉类型,要是去掉括号,必须只有一个参数
  }
}


interface ILove{
   void love(int a);
}