立聪堂德州十三局店 发表于 2022-8-11 20:09:25

Lamda表达式

推导:  
 实现类->  静态内部类->   局部内部类 -> 匿名内部类 ->  Lamda表达式
public class TestLambda1 {--------<br><br>   //3.静态内部类<em id="__mceDel">    static class Like2 implements ILike{
      @Override
      public void lambda() {
            System.out.println("I like lambda2");
      }
    }
--------
    public static void main(String[] args) {
      ILike like = new Like();
      like.lambda();

      like = new Like2();
      like.lambda();

      //4.局部内部类
      class Like3 implements ILike{
            @Override
            public void lambda() {
                System.out.println("I like lambda3");
            }
      }
      like = new Like3();
      like.lambda();

      //5.匿名内部类:没有类的名称,必须借助接口或父类
      like = new ILike() {
            @Override
            public void lambda() {
                System.out.println("I like lambda4");
            }
      };
      like.lambda();

      //6.用lambda简化5,因为只有一个抽象方法,可以让他自己推导出来
      like =()->{
            System.out.println("I like lambda5");
      };
      like.lambda();
    }
}
//1.定义一个函数式接口
interface ILike{
    void lambda();
}
//2.实现类
class Like implements ILike{
    @Override
    public void lambda() {
      System.out.println("I like lambda");
    }
}
</em>  Lamda表达式的简化
package lambda;
//简化lambda表达式
public class TestLambda2 {



    public static void main(String[] args) {
       ILove love = (int a)->{
                System.out.println("I love you-->"+a);
            };
      //简化1:去掉参数类型
      love = (a)->{
            System.out.println("I love you-->"+a);
      };
      //简化2:简化括号
      love = a->{
            System.out.println("I love you-->"+a);
      };
      //简化3:去掉花括号
      love = a-> System.out.println("I love you-->"+a);
      //总结:
          //lambda表达式只能有一行代码的情况下才能简化成为一行,如果有多行,那么就用代码块(花括号)包裹。
          //前提是接口为函数式接口(只能有一个方法)。
          //多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号。
      love.love(2);
    }
}
interface ILove{
    void love(int a);
}  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Lamda表达式