lambda表达式

能够用lambda表达式进行简化,必须是函数式接口

函数式接口:在一个接口里面,有且仅有一个抽象方法,可有很多非抽象方法

//1.定义一个函数式接口
interface ILike{
    void like();
}

从复杂到简化到lambda表达式的过程:

package thread;

public class TestLambda {
//3.静态内部类
    static class Like3 implements ILike{

    @Override
    public void like() {
        System.out.println("I like lambda 静态内部类");
    }
}
    public static void main(String[] args) {
        Like2 like2 = new Like2();
        like2.like();

        Like3 like3 = new Like3();
        like3.like();


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

        Like4 like4 = new Like4();
        like4.like();


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


//        6.对匿名内部类进行简化,用lambda简化,只写参数列表和{}里面的方法体

        ILike like6 = ()-> {System.out.println("I Like lambda lambda简化");};
        like6.like();

    }
}

//1.定义一个函数式接口
interface ILike{
    void like();
}

//2.外部实现类

class Like2 implements ILike{
    @Override
    public void like() {
        System.out.println("I like Lambda 外部实现类");
    }
}

lambda表达式的优化:

 

最标准的lambda表达式:

public class TestLambda03 {
    public static void main(String[] args) {
        Help help = (int a,double b,boolean c)->{
            System.out.println(a+" "+b+" "+c);
            System.out.println("好开心");
        };
        help.help(1,1.3,true);
    }
}
interface Help{
    void help(int a,double b,boolean c);
}

 

可以省略{}时:

public class TestLambda02 {
    public static void main(String[] args) {
//        当{}方法体里面只有一行代码时,lambda表达式可省略{};
//        当{}方法有多行代码时,必须要写{}
        Help help = (int a)-> System.out.println("帮助人数为"+a);
      /*  Help help = (int a)->{
            System.out.println("帮助人数为"+a);
            System.out.println("好开心");
        };*/
        help.help(1);
    }
}

interface Help{
    void help(int a);
}

 

()和参数类型可省略的情况

public class TestLambda03 {
    public static void main(String[] args) {
//        参数类型要省略都省略,要不省略都不省略
//        只有一个参数时才可省略()如 当只有一个参数时
//        Help help = a->{
//            System.out.println(a+" "+b+" "+c);
//            System.out.println("好开心");
//        };

        Help help = ( a, b, c)->{
            System.out.println(a+" "+b+" "+c);
            System.out.println("好开心");
        };
        help.help(1,1.3,true);
    }
}
interface Help{
    void help(int a,double b,boolean c);
}

 

posted @ 2020-07-21 16:36  DannyBoy~  阅读(128)  评论(0编辑  收藏  举报