JDK1.8之【Lamda表达式】

/**
 *@className: TestLamda1
 *@description: lamda表达式应用
 *@author: jj.liu
 *@create: 2021-10-13 14:56
 */
public class TestLamda1 {

    static class  Motorcycle2 implements Car{
        @Override
        public void drive() {
            System.out.println("学习摩托车驾驶。。。222");
        }
    }
    public static void main(String[] args) {
        //1、创建接口实现类对象
        Car car1 = new Motorcycle();
        car1.drive();

        //2、使用静态内部类调用
        Car car2 = new Motorcycle2();
        car2.drive();

        //3、使用局部内部类调用
        class Motorcycle3 implements Car{
            @Override
            public void drive() {
                System.out.println("学习摩托车驾驶。。。333");
            }
        }
        Car car3 = new Motorcycle3();
        car3.drive();

        //4、使用匿名内部类,没有类的名称,必须借助接口或者父类
        Car car4 = new Car() {
            @Override
            public void drive() {
                System.out.println("学习摩托车驾驶。。。444");
            }
        };
        car4.drive();

        //5、使用lamda表达式
        Car car5 = () -> {
            System.out.println("学习摩托车驾驶。。。555");
        };
        car5.drive();

        //6、简写
        Car car6 = () -> System.out.println("学习摩托车驾驶。。。666");
        //如果该接口抽象方法有参数,例如(int a),那么上面表达式可简写为:Car car6 = a -> System.out.println("学习摩托车驾驶。。。666");
        car6.drive();


        //总结:1、避免匿名内部类定义过多
        //     2、其实质属于函数式编程得概念
        //任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口
        //对于函数式接口,我们可以通过lamda表达式来创建该接口得对象。
    }
}

interface Car{
    void drive();
}

class  Motorcycle implements Car{
    @Override
    public void drive() {
        System.out.println("学习摩托车驾驶。。。111");
    }
}
原文地址:https://www.cnblogs.com/ljjdyz/p/15402986.html