天天看點

【Java】Lamda表達式介紹,5步簡化推導,Lambda表達式的再次簡化

文章目錄

  • Lambda表達式
  • 1、介紹
  • 2、5步簡化,最終精簡為Lambda表達式
  • 3、Lambda表達式的再次簡化

Lambda表達式

1、介紹

為 Java 8 新特性

【Java】Lamda表達式介紹,5步簡化推導,Lambda表達式的再次簡化
【Java】Lamda表達式介紹,5步簡化推導,Lambda表達式的再次簡化
【Java】Lamda表達式介紹,5步簡化推導,Lambda表達式的再次簡化

2、5步簡化,最終精簡為Lambda表達式

//推導Lambda表達式
public class TestLambda1 {

    //3.靜态内部類
    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簡化
        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");
    }
}      

3、Lambda表達式的再次簡化

//Lambda表達式的再次簡化
public class TestLambda2 {

    public static void main(String[] args) {

        //1.lambda表示簡化
        ILove love = (name)->{
            System.out.println("I love -->" + name);
        };

        //簡化1.去掉參數類型
        love = (name)-> {
            System.out.println("I love -->" + name);
        };

        //簡化2.去掉括号(隻有一個參數的情況)
        love = name-> {
            System.out.println("I love -->" + name);
        };
        
        //簡化3.去掉花括号(隻有一條語句的情況)
        love = name-> System.out.println("I love -->" + name);
        
        love.love("Java");
    }
}

interface ILove {
    void love(String name);
}