Java8的Lambda表达式(箭头函数)

函数式编程思想

在数学中 函数就是有输入量和输出量的一套计算方案 也就是“拿什么东西做什么事情”
相对而言 面向对象过分强调必须通过对象的形式来做事情
而函数式思想则尽量忽略面向对象的复杂语法——强调做什么 而不是以什么形式做

  • 面向对象的思想:
    做一件事情 找一个能解决这个事情的对象 调用对象的方法 完成事情
  • 函数式编程思想:
    只要能获取到结果 谁去做的 怎么做的都不重要,重视的是结果 不重视过程

可能不太好理解 我们举个简单的栗子:

代码冗余
public static void main(String[] args) {
   
        RunnableImpl runnable=new RunnableImpl();
        Thread thread=new Thread(runnable);
        thread.start();

        // 使用匿名内部类简化
        Runnable runnable1 = new Runnable() {
   
            @Override
            public void run() {
   
                System.out.println(Thread.currentThread().getName() + " - new");
            }
        };
        new Thread(runnable1).start();

        // 继续简化
        new Thread(new Runnable() {
   
            @Override
            public void run() {
   
                System.out.println(Thread.currentThread().getName() + " - new");
            }
        }).start();
    }

在这段多线程代码中:
1、Thread 类需要 Runnable 接口作为参数 因为其中的抽象 run 方法是用来指定线程任务内容的核心
2、为了指定 run 的方法体 不得不需要存在一个Runnable接口的实现类
3、为了省去定义一个RunnableImpl实现类的麻烦 不得不使用匿名内部类
4、因为必须覆盖重写抽象的run方法 所以方法名称 方法参数和方法返回值都不得不再写一遍 且不能写错
而实际上 只有方法体才是关键所在

因此 我们需要转换我们的编程思想
更加关注做什么 而不是怎么做

我们为了做这件事情而不得不创建一个匿名内部类对象
而我们真正希望做的事情是将 run 方法体内的代码传递给 Thread 类

传递一段代码——这才是真正的目的


更加简便:

在2014年3月Oracle所发布的Java 8(JDK 1.8)中 加入了Lambda表达式的重量级新特性 打开了新世界的大门
如下案例:

public static void main(String[] args) {
   
    // 使用匿名内部类的方式实现多线程
    new Thread(new Runnable(</
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值