【随笔】lambda基础

面向过程是抽象解题步骤;面向对象是抽象问题域中的实体;函数式编程是将行为参数化。

行为参数化的含义是一段可以传递的代码。

lambda基础有三个点:

  • 函数式接口
  • lambda表达式
  • 方法的引用

函数式接口

@FunctionnalInterface

只包含一个抽象方法的接口就叫做函数式接口。

FunctionalInterface (Java SE 15 & JDK 15) (oracle.com)

Conceptually, a functional interface has exactly one abstract method.

However, the compiler will treat any interface meeting the definition of a functional interface as a functional interface regardless of whether or not a FunctionalInterface annotation is present on the interface declaration.

lambda表达式

lambda表达式有两种基本结构:

  1. 表达式lambda:只包含的单个表达式的lambda,这种结构不需要显式return;
  2. 块lambda:入参指向的不再d是单个表达式,而是一个代码块,在块lambda中必须显式的return返回值;

基本语法:入参指向方法体

  • 入参
    • 如果参数可以被类型推导,那么就可以省略入参的类型
    • 如果参数只有一个且可以被类型推导,那么还可以省略圆括号
    • 如果没有参数,那么写成一个空的圆括号
  • 方法体
    • 如果只有一个表达式,那么可以省略大括号和return(表达式lambda)
    • 如果有多个表达式,则必须写成代码块和显式的return返回值(块lambda)

方法的引用

  • 静态方法:ClassName::staticMethod
  • 实例方法:object::intanceMethod
  • 构造函数:ClassName::new

更多lambda

了解lambda基础之后,你还需要进一步学习两个包:

  • package java.utill.function:要在你的代码中使用lambda,你可能要定义很多函数式接口,不妨看看这个包,基本都为你定义好了,拿来直接用就行了;
  • package java.util.stream:stream API的设计考虑到了lambda表达式,要想体验Java lambda的强大能力,就去使用并掌握stream包;

推荐书单:

  • 基础:
    • 《Java8编程官方参考教程》
    • 《Java8函数式编程》
  • 深入:
    • 《函数式编程思想》
    • 《Java8实战》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值