编程思想转换&体验Lambda的更优写法和Lambda标准格式

编程思想转换&体验Lambda的更优写法

做什么, 而不是怎么做

是希望创建一个匿名内部类对象吗?只是为了做这件事情而不得不创建一个对象。

真正希望做的事情是:将run方法体内的代码传递给Thread类知晓。

 

传递一段代码--这才是我们真正的目的。而创建对象只受限于面向对象语法而不得不采取的一种手段方式。

将关注点从“怎么做”回归到“做什么”本质上,就会发现只有能更好地达到目的,过程与形式其实并不重要。

    public static void main(String[] args) {
        //使用匿名内部类的方式, 实现多线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()+"新线程创建了");
            }
        }).start();
        //使用lambda表达式,实现多线程
        new Thread(()->{
            System.out.println(Thread.currentThread().getName()+"新线程创建了");
        }).start();
    }

Lambda标准格式

匿名内部类的好处与弊端

 匿名内部类可以帮我们省去实现类的定义;另一方面,匿名内部类的语法--确实太复杂了

语义分析

Runnable接口只有一个run方法的定义:

  public abstract void run();

即制定了一种做事情的方案(其实就是一个函数):

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

>无返回值: 该方案不产生任何结果。

>代码块(方法体) : 该方案的具体执行步骤。

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

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

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

Lambda表达式的标准格式:

  由三部分组成:

    a.一些参数

    b.一个箭头

    c.一段代码

  格式:

    (参数列表) -> {一些重写方法的代码};

  解释说明格式:

    (): 接口中抽象方法的参数列表,没有参数,就空着; 有参数就写出参数,多个参数使用逗号分隔

     ->:传递的意思, 把参数传递给方法体{}

     {} : 重写接口的抽象方法的方法体

 

 

posted @ 2022-07-11 11:01  魔光领域  阅读(24)  评论(0编辑  收藏  举报