黑马程序员技术交流社区
标题:
[石家庄校区]就业班JavaSE高级部分day12
[打印本页]
作者:
湿漉漉的文字控
时间:
2018-12-2 15:15
标题:
[石家庄校区]就业班JavaSE高级部分day12
就业班JavaSE高级部分day12
函数式
函数式接口:
函数式接口在java中指: 有且仅有一个抽象方法的接口,接口中还可以包括其他方法(默认,静态,私有)
@FunctionalInterface注解:
在接口上使用,检测接口是否为函数式接口
Lambda的延迟执行:
Lambda具有
"延迟执行"
的特点
:
传递Lambda对象
,
只有当符合执行条件时
,
才会执行代码
使用Lambda表达式作为方法参数
当一个方法的参数是一个函数式接口时, 可以使用Lambda表达式传递该参数, 简化匿名内部类的代码
使用Lambda表达式作为方法返回值
当一个方法的返回值是一个函数式接口时, 可以返回Lambda表达式, 简化匿名内部类的代码
Supplier生产型函数式接口
java
.
util
.
function
.
Supplier
<
T
>
函数式接口
:
生产型函数式接口
// 抽象方法
T
get
():
用于获取一个对象或值
.
至于获取什么值
,
怎么获取
,
需要我们根据应用场景编写Lambda来实现
Consumer消费型函数式接口
java
.
lang
.
StringBuilder类
:
可变字符序列
,
类似于String
,
线程不安全效率高
StringBuilder
reverse
():
将StringBuilder内部保存的内容反转
String
toString
():
转换为String
new
StringBuilder
(
"abc"
).
reverse
().
toString
();
->
"cba"
"abc"
->
"cba"
java
.
lang
.
StringBuffer类
:
可变字符序列
,
类似于String
,
线程安全效率低
StringBuffer
reverse
():
将StringBuffer内部保存的内容反转
String
toString
():
转换为String
java
.
util
.
function
.
Consumer
<
T
>
函数式接口
:
消费型函数式接口
// 抽象方法
void
accept
(
T
t
):
用于消费
(
使用
)
一个对象或值
.
至于怎么消费
,
要我们根据应用场景编写Lambda实现
// 默认方法
default
Consumer
<
T
>
andThen
(
Consumer
<?
super
T
>
after
):
拼接两个Consumer接口的Lambda对象实现连续操作
.
谁写前面
,
谁先消费
Consumer消费型函数式接口: 默认方法andThen()
java
.
util
.
function
.
Consumer
<
T
>
函数式接口
:
消费型函数式接口
// 默认方法
default
Consumer
<
T
>
andThen
(
Consumer
<?
super
T
>
after
):
拼接两个Consumer接口的Lambda对象实现连续操作
.
谁写前面
,
谁先消费
Predicate条件判断函数式接口
java
.
util
.
function
.
Predicate
<
T
>
函数式接口
:
条件接口
,
用于判断
// 抽象方法
boolean
test
(
T
t
):
判断参数传递的对象
.
至于怎么判断
,
判断什么
,
需要我们编写Lambda表达式实现
// 默认方法 (用于连接多个判断条件)
default
Predicate
<
T
>
and
(
Predicate
<?
super
T
>
other
):
与
&&
default
Predicate
<
T
>
or
(
Predicate
<?
super
T
>
other
):
或
||
default
Predicate
<
T
>
negate
():
非
,
取相反结果
!
boolean
b
=
判断方式1
.
or
(
判断方式2
).
and
(
判断方式3
).
negate
().
test
(
"abc"
)
Function转换型函数式接口
函数
y
=
f
(
x
)
java
.
util
.
function
.
Function
<
T
,
R
>
:
根据一个
T类型的数据
转换为
另一个R类型的数据
T是
输入
(
input
)
的类型
R是
返回结果
(
result
)
的类型
有进有出
,
所以称为
"函数Function"
// 抽象方法
R
apply
(
T
t
):
将T转换为R
.
至于T和R是什么类型
,
以及如何转换
,
需要传递Lambda表达式实现
// 默认方法
default
<
V
>
Function
<
T
,
V
>
andThen
(
Function
<?
super
R
,
?
extends
V
>
after
):
拼接多个Function转换
Function转换型函数式接口: 默认方法andThen()
default
<
V
>
Function
<
T
,
V
>
andThen
(
Function
<?
super
R
,
?
extends
V
>
after
):
连接多种转换操作
,
先做什么
,
再做什么
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2