Java 8 —— Lambda表达式

本文详细介绍了Java 8中的Lambda表达式,它简化了行为参数化,使得代码更加简洁。文章讲解了Lambda的语法、使用场景、函数式接口的应用,如Predicate、Consumer和Function,并通过实例展示了如何使用Lambda和方法引用进行资源处理和列表排序,提高代码可读性和灵活性。
摘要由CSDN通过智能技术生成

本文内容大部分来自《Java 8实战》一书

前言

在上一篇文章中,我们了解了利用行为参数化来传递代码有助于应对不断变化的需求,它允许你定义一个代码块来表示一个行为,然后传递它。一般来说,利用这个概念,你就可以编写更为灵活且可重复使用的代码了。

但是你同时也看到,使用匿名类来表示不同的行为并不令人满意:代码十分啰嗦,这会影响程序员在时间中使用行为参数化的积极性。Lambda表达式很好的解决了这个问题,它可以让你很简洁地表示一个行为或传递代码。现在你可以把Lambda表达式看作匿名功能,它基本上就是没有声明名称的方法,但和匿名类一样,它也可以作为参数传递给一个方法。

Lambda管中窥豹

可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它由参数列表、函数主体、返回类型,可能还有一个抛出的异常列表。

Lambda表达式鼓励你采用上一篇文章中提到的行为参数化风格,最终结果就是你的额代码变得更加清晰、更加灵活。比如,利用Lambda表达式,你可以更为简洁地自定义一个Comparator对象:

不得不承认,代码看起来更清晰了。要是现在觉得Lambda表达式看起来一头雾水的话也没关系,很快就会一点点的解释清楚的。现在,请注意你基本上只传递了比较两个苹果重量所需要的代码。看起来就像只传递了compare方法的主体。你很快就会学到,你甚至还可以进一步简化代码。

为了进一步说明,下面给出了Java 8五个有效的Lambda表达式的例子:

Java语言设计者选择这样的语法,是因为C#和Scala等语言中的类似功能广受欢迎。Lambda的基本语法是:

(parameters) -> expression

(请注意语句的花括号)

(parameters) -> { statements; }

你可以看到,Lambda表达式的语法很简单,我们下来来测试一下你对这个模式的了解程度:

在哪里以及如何使用Lambda

现在你可能在想,在哪里可以使用Lambda表达式。直接公布答案:你可以在函数式接口上使用Lambda表达式。

函数式接口

还记得上一篇文章中,为了参数化filter方法的行为而创建的Predicate接口吗?它就是一个函数式接口!为什么呢?因为Predicate仅仅定义了一个抽象方法:

public interface Predicate<T>{
   
    boolean test(T t);
}

一言以蔽之,函数式接口就是之定义一个抽象方法的接口。你已经知道了Java API

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值