java8实战之Lambda表达式笔记
2018-02-17 11:08
537 查看
Lambda表达式可以理解为一种匿名函数;没有名称,有参数列表、函数主题、返回类型,可能还有一个可以抛出的异常列表
Lambda表达式3个部分:参数列表;箭头;主体
在哪里使用:在函数式接口上使用
函数式接口:接口只定义了一个抽象方法;
Lambda表达式允许直接以内联的形式作为函数式接口的抽象方法的提供,并把整个表达式作为接口的实例
@FunctionalInterface 表示该接口会设计成一个函数式接口
Predicate 函数描述符 T -> boolean boolean test(T t)
Consumer T -> void void accept(T t)
Function T,R -> R R apply(T t)
Supplier () -> T T get()
Callable () -> T T call()
BiFunction R apply(T,U)
还有为原始类型设计的对应接口可以避免装箱。输入参数类型的函数式接口的名称要加上对应的原始类型前缀如:IntPredicate等
如果一个Lambda的主题是一个语句表达式,它就和一个返回void的函数描述符兼容
闭包就是一个函数的实例,且它可以无限制地访问那个函数的非本地变量
目标引用在::前,方法名称在后
2.谓词复合:谓词接口包括3个方法:negate;and; or
3.函数复合:Function接口代表的Lambda表达式复合起来; andThen; compose 都返回一个Function实例
Lambda表达式3个部分:参数列表;箭头;主体
在哪里使用:在函数式接口上使用
函数式接口:接口只定义了一个抽象方法;
Lambda表达式允许直接以内联的形式作为函数式接口的抽象方法的提供,并把整个表达式作为接口的实例
@FunctionalInterface 表示该接口会设计成一个函数式接口
Lambda表达式使用步骤:1.行为参数化 2.使用函数式接口来传递行为 3.执行一个行为 4.传递Lambda
常用函数式接口:Predicate 函数描述符 T -> boolean boolean test(T t)
Consumer T -> void void accept(T t)
Function T,R -> R R apply(T t)
Supplier () -> T T get()
Callable () -> T T call()
BiFunction R apply(T,U)
还有为原始类型设计的对应接口可以避免装箱。输入参数类型的函数式接口的名称要加上对应的原始类型前缀如:IntPredicate等
类型推断:
Lambda表达式的类型是从使用Lambda的上下文推断出来的;Lambda表达式需要的类型称为目标类型如果一个Lambda的主题是一个语句表达式,它就和一个返回void的函数描述符兼容
使用局部变量:
局部变量必须显示声明为final闭包就是一个函数的实例,且它可以无限制地访问那个函数的非本地变量
方法引用:
根据已经有的方法创建Lambda表达式目标引用在::前,方法名称在后
如何构建方法引用:1.指向静态方法的方法引用(如:Integer :: parseInt)2.指向任意类型实例方法(String :: length)
3.指向现有对象的实例方法
方法引用是否有效:方法引用的签名必须和上下文类型匹配构造函数引用:
ClassName::new
复合Lambda表达式的有用方法:
1.比较器复合:逆序;比较器链2.谓词复合:谓词接口包括3个方法:negate;and; or
3.函数复合:Function接口代表的Lambda表达式复合起来; andThen; compose 都返回一个Function实例
相关文章推荐
- java lambda表达式学习笔记
- Java8实战 — Lambda表达式详解
- Java8 实战系列-02-lambda 表达式简介
- 一些java lambda表达式的笔记
- 一、JAVA8学习笔记 Lambda表达式快速入门
- java lambda表达式 闭包学习笔记
- java8学习笔记之lambda表达式
- Java8学习笔记(一)-初步认识Lambda表达式
- Java8学习笔记 — 【Lambda表达式】
- Java Lambda 表达式学习笔记
- Java8 实战系列-03-lambda 表达式实战
- [学习笔记] Java核心技术 卷一:基础知识 接口、lambda表达式与内部类(三)
- java8实战:Lambda 表达式
- 【Java学习笔记之三十一】详解Java8 lambda表达式
- Java8 学习笔记--函数式接口与lambda表达式的关系
- Java8学习笔记----Lambda表达式 (转)
- Java学习笔记-Lambda表达式及內建函数式接口
- Java8学习笔记之Lambda表达式
- java8新特性学习笔记(一) Lambda表达式