jdk1.8新特性Lambda表达式推过程

JDK1.8新特性

jdk1.8新特性之函数型接口
jdk1.8新特性Lambda表达式推过程
jdk1.8新特性Stream流处理

上一篇我们对 jdk的函数型接口 有了一定了解,这对我们本片文章还是有帮助的!

概念

Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。

Lambda表达式推演

定义一个函数接口

这里为了方便使用,参与泛型定义

@FunctionalInterface
public interface MyInterface<T,R> {
    R strategy (T t, R r);
}

常规写法


    public static void test(MyInterface<String, List> inter) {
        List<String> list = inter.strategy("hello", new ArrayList());
        System.out.println(list);
    }

    public static void main(String[] args) {
        test(new MyInterface<String, List>() {
            @Override
            public List strategy(String s, List list) {
                list.add(s);
                return list;
            }
        });
    }

其实这并没有什么不对,但是我们只是想进行赋值,多了好多无用的冗余代码,这是Lambda表达式就产生了!

Lambda表达式写法

public static void test(MyInterface<String, List> inter) {
        List<String> list = inter.strategy("hello", new ArrayList());
        System.out.println(list);
}

public static void main(String[] args) {
    test((x,y)->{
        y.add(x);
        return y;
    });
}

当我们运行,得到的结果一致!
在这里插入图片描述

推演过程

(x,y)->{…} --> test(param) --> param==MyInterface --> lambda表达式-> MyInterface类型
这个就是对于lambda表达式的类型检查,MyInterface接口就是lambda表达式的目标类型(target typing)

(x,y)->{…} --> MyInterface.strategy(T r, R r)–> MyInterface<String, List> inter
–> TString RList --> lambda–> (x, y) == strategy(T t , R r)–> xTString yRList
lambda表达式参数的类型检查

Thread的写法

new Thread(() -> System.out.println("javayh")).start();

关注 Java有货领取更多资料

联系小编。微信:372787553,带您进群互相学习
左侧小编微信,右侧获取免费资料
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杨同学~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值