gpt4 book ai didi

java - 如何在流迭代期间使用丰富(外部)调用?

转载 作者:行者123 更新时间:2023-12-01 19:31:36 24 4
gpt4 key购买 nike

在迭代流期间使用丰富(外部)API 调用是否可以?

例如下面的代码片段:

User[] fullUsers = plainUsers.stream().map(user -> {
user.setComments(restAPI.getUserComments(user.getId()));
return user;
}).toArray();

这里我们看到对一些外部restAPI系统的调用来填充用户实体中的字段。

这种方法好吗?或者在处理丰富/外部系统时我们应该采用不同的方法?

最佳答案

流是一种函数式习惯用法,函数式代码应该努力做到不可变且没有副作用。修改流项目不是一个好的做法。这在技术上是可行的,但我肯定会在代码审查中标记它。

map()的目的是将对象转换为新对象。它不是对现有对象进行适当的修改。这是一种代码味道,您正在返回传入的对象。

我建议使用forEach()。它被设计成有副作用。

plainUsers.forEach(user -> user.setComments(restAPI.getUserComments(user.getId()));
User[] fullUsers = plainUsers.toArray(new User[0]);

或者,显式的 for 循环也可以工作:

for (User user: plainUsers) {
user.setComments(restAPI.getUserComments(user.getId()));
}

User[] fullUsers = plainUsers.toArray(new User[0]);

关于java - 如何在流迭代期间使用丰富(外部)调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59667269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com