Lambda标准格式与Lambda表达式的无参数无返回值的练习

Lambda标准格式

匿名内部类的好处与弊端
一方面,匿名内部类可以帮我们省去实现类的定义;另一方面,匿名内部类的语法――确实太复杂了!

语义分析


仔细分析该代码中的语义,Runnable接口只有一个run方法的定义︰
public abstract void run( );
即制定了一种做事情的方案(其实就是一个函数)∶

无参数:不需要任何条件即可执行该方案。

无返回值:该方案不产生任何结果。
代码块(方法体)︰该方案的具体执行步骤。

同样的语义体现在Lambda语法中,要更加简单∶

()-> system.out .println("多线程任务执行!")

前面的一对小括号即run方法的参数(无),代表不需要任何条件;

中间的一个箭头代表将前面的参数传递给后面的代码﹔

后面的输出语句即业务逻辑代码。

Lambda标准格式


Lambda省去面向对象的条条框框,格式由3个部分组成∶。

一些参数

一个箭头

一段代码
Lambda表达式的标准格式为︰

(参数类型参数名称)->{代码语句}

前面的一对小括号即run方法的参数(无),

代表不需要任何条件;

中间的一个箭头代表将前面的参数传递给后面的代码﹔

后面的输出语句即业务逻辑代码。

 

使用Lambda标准格式(无参无返回)

题目

给定一个厨子Cook 接口,内含唯壬的抽象方法makeFood,且无参数、无返回值。如下︰

//接口
public interface Eatable {
    void eat();
}

实现类:

public class EatableImpl implements Eatable {
    @Override
    public void eat() {
        System.out.println("在干嘛?");
    }
}

测试类:

public class EatableDemo {
    public static void main(String[] args) {
    方式1    在主方法中调用useEatable方法
        Eatable e = new EatableImpl();
        useEatable(e);

       方式2   匿名内部类
        useEatable(new EatableImpl(){
            @Override
            public void eat() {
                System.out.println("多喝水");
            }
        });


        方式3 Lambda 表达式
        useEatable(() -> {
            System.out.println("多吃饭");
        });


    }

    public static void useEatable(Eatable e) {
        e.eat();
    }
}

 

posted @ 2022-07-08 14:49  zj勇敢飞,xx永相随  阅读(160)  评论(0编辑  收藏  举报