从外部类缩减代码到lambda表达式

public class LambdaTest {
    //2.内部类
    static class Car2 implements Car{
        @Override
        public void carColor(String color) {
            System.out.println("car2是"+color+"颜色");
        }
    }

    public static void main(String[] args) {
        //3.局部内部类
        class Car3 implements Car{
            @Override
            public void carColor(String color) {
                System.out.println("car3是"+color+"颜色");
            }
        }
        Car car=new Car1();
        car.carColor("蓝色");
        car=new Car2();
        car.carColor("红色");
        car=new Car3();
        car.carColor("白色");
        //4.匿名内部类
        car=new Car(){
            @Override
            public void carColor(String color) {
                System.out.println("car4是"+color+"颜色");
            }
        };
        car.carColor("黑色");
        //5.lambda简化 使用条件,接口必须是函数式接口:只有唯一一个抽象方法的接口
        car=(String color) ->{
            System.out.println("car5是"+color+"颜色");
        };
        car.carColor("绿色");
        //6. lambda再简化。
        // 简化参数类型,当有多个参数时,要简化就都简化
        //简化参数括号,仅当参数只有一个时
        //简化花括号,仅当代码块只有一条语句时
        car=color -> System.out.println("car6是"+color+"颜色");
        car.carColor("粉红色");

    }

}
interface Car{
    void carColor(String color);
}

//1.外部类
class Car1 implements Car{
    @Override
    public void carColor(String color) {
        System.out.println("car1是"+color+"颜色");
    }
}
posted @ 2021-11-03 16:03  让时间变成力量  阅读(18)  评论(0)    收藏  举报