Java8之Lambda(概念)

什么是函数式接口

定义:如果一个接口中只有一个抽象方法,那么Java编译器会默认该接口是函数式接口。
解释一下上面的话,什么情况下才是接口中只有一个抽象方法,因为在Java中,Object是所有类的父类,所以当一个接口复写了Object类中的抽象方法,Java编译器并不会将该抽象方法算在该接口中,也就是说,接口中的抽象方法并不会增加一个。

函数式接口的情况
  1. 如果我们在某个接口上声明了FunctionalInterface注解,那么编译器就会按照函数式接口的定义来要求该接口。
  2. 如果某个接口只有一个抽象方法,但我们并没有给该接口声明 FunctionalInterface注解,那么编译器依旧会将该接口看作是函数式接口。
什么是Lambda表达式

Java8中引入了一个新的操作符 " -> " 该操作符称为箭头操作符或 Lambda 操作符。
Lambda表达式为Java添加了缺失的函数式编程特性,使我们能将函数当做一等公民看待。
在将函数作为一等公民的语言中,Lambda表达式的类型是函数。但在Java中,Lambda表达式是对象,他们必须依附于一类特别的对象类型--------函数式接口

Lambda表达式的特点
  • 传递行为,不仅仅是值
    这样做的好处是:
  1. 提升抽象层次
  2. API重用性更好
  3. 更加灵活
Lambda表达式的结构

正常情况:
(type arg1,type arg2) -> {body}
当参数只有一个时,且其类型可推导时,圆括号()可省略。例如:a -> return a*a
Lambda表达式的主体可包含零条或多条语句
如果Lambda表达式的主体只有一条语句,花括号{ } 可省略。匿名函数的返回类型与该主体表达式一直
如果Lambda表达式的主体包含一条以上语句,则表达式必须包含在花括号{ }中(形成代码块)。匿名函数的返回类型与代码块的返回类型一致,若没有返回则为空

什么是高阶函数

**如果一个函数接受一个函数作为参数,或者返回一个函数作为返回值,那么该函数就叫做高阶函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值