gpt4 book ai didi

java - 在 Play Framework 中将 Promise 列表转换为列表的 Promise

转载 作者:行者123 更新时间:2023-11-30 09:13:25 25 4
gpt4 key购买 nike

我想转换一个 List<Promise<Boolean>>进入 Promise<List<Boolean>> .我知道这可以使用 sequence 来实现方法,但我在正确设置类型时遇到了一些问题。

这是我尝试过的:

第一种(天真的)方法

List<Promise<Boolean>> foo = new ArrayList<Promise<Boolean>>;

// ... Code that loops over some other collection
// and adds multiple Promise<Boolean>s to foo

Promise<List<Boolean>> bar = Promise.sequence(foo);

这不会编译,因为“参数类型 List<Promise<Boolean>> 不符合形式参数类型 Iterable<Promise<? extends A>>”。

第二种方法

声明 foo 的类型符合上面错误消息所建议的形式参数类型:

List<Promise<? extends Boolean>> foo = new ArrayList<Promise<Boolean>>()

根据 this answer 中列出的子类型规则, Promise<Boolean>应该是 Promise<? extends Boolean> 的子类型,但我在这里遇到类型不匹配:“无法从 ArrayList<F.Promise<Boolean>> 转换为 List<F.Promise<? extends Boolean>>

第三种方法

ArrayList<Promise<Boolean>> 的实例化中删除类型信息:

List<Promise<? extends Boolean>> foo = new ArrayList();

这会编译,但会导致关于未经检查的转换的警告,我想摆脱它:“类型 ArrayList 的表达式需要未经检查的转换以符合 List<F.Promise<? extends Boolean>>。”


我错过了什么?如何让类型正确排列?

最佳答案

您可以改用此声明:

List<Promise<? extends Boolean>> foo = new ArrayList<Promise<? extends Boolean>>();

检查以下答案以了解其工作原理:

关于java - 在 Play Framework 中将 Promise 列表转换为列表的 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21040580/

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