View on GitHub

我的学习笔记

好记性不如烂笔头

6.3 Lambda表达式

6.3.1 为什么引入lambda表达式

6.3.2 lambda表达式的语法

6.3.3 函数式接口

6.3.4 方法引用

6.3.7 处理lambda表达式

函数式接口 参数类型 返回类型 抽象方法名 描述 其他方法
Runnale void run 作为无参数或返回值的动作运行  
Supplier<T> T get 提供一个T类型的值  
Consumer<T> T void accept 处理一个T类型的值 addThen
BiConsumer<T,U> T,U void accept 处理T和U类型的值 addThen
Function<T,R> T R apply 有一个T类型参数的函数 compose
addThen
identity
BiFunction<T,U,R> T,U R apply 有T和U类型参数的函数 addThen
UnaryOperation<T> T T apply 类型T上的一元操作符 compose
addThen
identity
BinaryOperation<T> T,T T apply 类型T上的二元操作符 addThen
maxBy
minBy
Predicate T boolean test 布尔值函数 and
or
negate
isEqual
BiPredicate T,U boolean test 有两个参数的布尔值函数 and
or
negate
函数式接口 参数类型 返回类型 抽象方法名
BooleanSupplier none boolean getAsBoolean
[P]Supplier none p getAs[P]
Obj[P]Consumer p void accept
[P]Function<T> T,p void accept
[P]To[Q]Function p q applyAs[Q]
To[P]Function<T> T p applyAs[p]
To[P]BitFunction<T,U> T,U p applyAs[P]
[P]UnaryOperator p p applyAs[P]
[P]BinaryOperator p,p p applyAs[P]
[P]Predicate p boolean test
  _p,q_为int,long,double; [P][Q]为Int,Long,Double; + 大多数标准函数式接口都提供了非抽象方法来生成或合并函数 + 如果设计自己的接口,其中只有一个抽象方法,可以用`@FunctionalInterface`注解来标记这个接口     - 如果无意中增加了另一个非抽象方法,编译器会产生一个错误消息     - javadoc也里会指出你的借口是一个函数式接口  + 并非必须使用注解.根据定义,`任何有一个抽象方法的接口`都是函数式接口.不过使用`@FunctionInterface`注解确实是一个很好的做法  

返回