2019-01-27

作者: DreamPath | 来源:发表于2019-01-27 22:14 被阅读0次

Lambda表达式

函数式编程思想

在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。

  • 相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。
  • 面向对象的思想:
    做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.
  • 函数式编程思想:
    只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程.
冗余的Runnable代码
public class lambdaDemo {
    public static void main(String[] args) {
        // 匿名内部类  传统写法
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("多线程任务执行");
            }
        };
        new Thread(runnable).start();
        //使用lambda表达式方法
        Runnable runnable1 = () -> {
        };
        new Thread(runnable1).start();
        
        //使用方法优化
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("多线程执行");     
            }
        });
        
        //lambda优化写法  使用匿名类部类    并不需要中间的Runnable对象,而是直接得出结果-->函数式编程思想
        new Thread(()->System.out.println("多线程任务执行")).start();
    }
}
使用实现类

要启动一个线程,需要创建一个 Thread 类的对象并调用 start 方法。而为了指定线程执行的内容,需要调用 Thread 类的构造方法:

package lambda_de;

/**
 * @author lx
 * @date 2019/1/27 - 16:45
 */
class Lambda_demo2 implements Runnable{
    @Override
    public void run() {
        System.out.println("多线程任务执行");
    }
}
public class Test{
    public static void main(String[] args) {

        Lambda_demo2 demo2 = new Lambda_demo2();

        new Thread(demo2).start();
    }
}
匿名内部类的好处与弊端

一方面,匿名内部类可以帮我们省去实现类的定义;另一方面,匿名内部类的语法稍微复杂一点.
仔细分析该代码中的语义, Runnable 接口只有一个 run 方法的定义:

  • public abstract void run();
    即制定了一种做事情的方案(其实就是一个函数):

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

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

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

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

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

  • 前面的一对小括号即 run 方法的参数(无),代表不需要任何条件;
  • 中间的一个箭头代表将前面的参数传递给后面的代码;
  • 后面的输出语句即业务逻辑代码;
Lambda标准格式

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

  • 小括号内的语法与传统方法参数列表一致:无参数则留空;多个参数则用逗号分隔。
  • -> 是新引入的语法格式,代表指向动作。
  • 大括号内的语法与传统方法体要求基本一致

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

相关文章

网友评论

    本文标题:2019-01-27

    本文链接:https://www.haomeiwen.com/subject/higgjqtx.html