Lambda表达式、函数式接口用法

函数式接口

什么是函数式接口

只包含一个抽象方法的接口,称为函数式接口

可以通过Lambda创建该接口的对象

以前用匿名实现类表示的都可以使用Lambda表达式来写

Lambda表达式

Lambda就是将以前我们写的匿名实现类简化了,下面我通过几段递进的代码演示Lambda的简化过程

匿名实现类写法
@Test
public void test() {
    Runnable run = new Runnable() {
        @Override
        public void run() {
            System.out.println("以前的写法");
        }
    };
}
这段代码用Lambda表达式来写
@Test
public void test() {
    Runnable r = () -> {
        System.out.println("无参,无返回值");
    };
    r.run();
}

这样还是不够简单,我们继续看其他的几种写法

有一个参数,没有返回值
Consumer<String> c2 = (String s) -> {
    System.out.println(s);
};
数据类型也可以省略
Consumer<String> c2 = (s) -> {
    System.out.println(s);
};
如果只有一个参数,小括号也可以省略
Consumer<String> c2 = s -> {
    System.out.println(s);
};
有多个参数,多条执行语句,并且有返回值
Comparator<Integer> c2 = (o1, o2) -> {
    System.out.println(o1);
    System.out.println(o2);
    return o1.compareTo(o2);
};
方法体只有一条语句时,return 和 大括号都可以省略
Comparator<Integer> c = (o1, o2) -> o1.compareTo(o2);
总结

只有函数式接口可以使用Lambda表达式,函数式接口就是只有一个抽象方法的接口

Lambda表达式的左边:如果只有一个参数,小括号可以省略,参数类型可以考虑省略

右边:正常情况下应该有一对大括号,但是如果只有一条执行语句,return和大括号都可以省略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值