Lambda

Lambda

内部类

 package com.yongsheng.lamda;
 /*
 推导lambda表达式
  */
 public class TestLambda1 {
     public static void main(String[] args) {
         ILike like = null;
         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简化
         like = ()->{
             System.out.println("I like lambda5");
        };
         like.lambda();
 
    }
 
     //3.静态内部类
     static class Like2 implements ILike{
 
         @Override
         public void lambda() {
             System.out.println("I like lambda2");
        }
    }
 }
 
 //1.定义一个函数式接口
 interface ILike{
     void lambda();
 }
 
 //2.实现类
 class Like implements ILike{
 
     @Override
     public void lambda() {
         System.out.println("I like lambda1");
    }
 }

Lambda

 package com.yongsheng.lamda;
 
 public class TestLambda2 {
    public static void main(String[] args) {
        ILove love = null;
 
        love = (int a)->{
            System.out.println("I love you1 ");
        };
        love = (a)->{
            System.out.println("I love you2 ");
        };
        love = a->{
            System.out.println("I love you3 ");
        };
        love = a-> System.out.println("I love you4 ");
         
        love.love(520);
 
 
    }
 }
 
 interface ILove{
    void love(int a);
 }
 

总结

  1. lambda表达式只能有一行代码的情况下才能简化成为一行,如果有多行,那么就用代码块包裹。

  2. 前提接口必须是函数式接口。

  3. 多个参数也可以去掉参数类型,要去掉必须都去掉,如:(a, b) - > {};

posted @ 2020-06-11 09:23  potatonion  阅读(177)  评论(0)    收藏  举报