时人不识凌云木,直待凌云始道高。这篇文章主要讲述thenApply()和thenCompose()的区别相关的知识,希望能为你提供帮助。
thenApply()和thenCompose()的区别:
thenapply()是返回的是非CompletableFuture类型:
它的功能相当于将CompletableFuture<
T>
转换成CompletableFuture<
U>
。
thenCompose()用来连接两个CompletableFuture,返回值是新的CompletableFuture:
总结:thenApply()转换的是泛型中的类型,是同一个CompletableFuture;
thenCompose()用来连接两个CompletableFuture,是生成一个新的CompletableFuture。
例子:
1.thenApply():
CompletableFuture<
Integer>
future = CompletableFuture.supplyAsync(() ->
{
return 100;
});
CompletableFuture<
String>
f =future.thenApplyAsync(i ->
i * 10).thenApply(i ->
i.toString());
System.out.println(f.get());
//"1000"
【thenApply()和thenCompose()的区别】thenApply()源码:
public <
U>
CompletableFuture<
U>
thenApply(
Function<
? super T,? extends U>
fn) {
return uniApplyStage(null, fn);
}
解读:
参数: Function<
? super T,? extends U>
fn)
输入前面的CompletableFuture<
T>
中的T的值,返回一个继承U的类型的值,将这个值返回
顺序:先确定返回值U或其子类,再确定方法中 public <
U>
CompletableFuture<
U>
thenApply()中的 <
U>
类型
2.thenCompose():
CompletableFuture<
Integer>
future = CompletableFuture.supplyAsync(() ->
{
return 100;
});
CompletableFuture<
String>
f =future.thenCompose( i ->
{
return CompletableFuture.supplyAsync(() ->
{
return (i * 10) + "";
});
});
System.out.println(f.get());
//1000
推荐阅读
- Android 使用WebView浏览有声音或者视频的网页,关闭WebView之后,声音或者视频不停止的解决办法
- 各类app
- Android官方ORM数据库Room技术解决方案简介
- angular2 post以“application/x-www-form-urlencoded”形式传参的解决办法
- Android体系结构
- CK2059-组件方式开发web app全站
- android文件存储
- android 百度地图(具体请看百度开放平台)
- 笔记本win8系统键盘太过灵敏常常打错字怎样办