【问题标题】:CompositeFuture not working with Futures returning ListsCompositeFuture 不适用于期货返回列表
【发布时间】:2021-12-30 03:52:19
【问题描述】:

我有一个特定的数据处理用例,我将返回 Future<List<SamplePOJO>> 类型的未来。我有多个这样的期货要添加到列表中。

CompositeFuture.join() 在此列表中不起作用,因为它要求List<Future> 而不是List<Future<List<SamplePOJO>>>。有什么解决方法吗?

【问题讨论】:

    标签: java vert.x


    【解决方案1】:

    你可以在List<Future>而不是List<Future<List<SamplePOJO>>>中收集所有Future<List<SamplePOJO>>

    这将使CompositeFuture.all 方法接受它。

            Future<List<String>> f = getFuture();
            
            List<Future> futures = new ArrayList<>();
            futures.add(f);
            
            CompositeFuture.all(futures);
    

    【讨论】:

    • 我试过了。但是,当我对该列表中的期货执行 future.result() 时,我得到一个对象而不是列表。
    • CompositeFuture.all 接受非参数化Future 的原因是您可以向它传递一个可能解析为不同结果类型的期货列表。这不能用泛型处理(尽管它可能接受Future&lt;?&gt; 的列表而不仅仅是Future)。似乎唯一的解决方案是拥有一个List&lt;Future&lt;List&lt;SamplePOJO&gt;&gt;&gt;,您稍后将使用它从中获取结果,然后将第二个List&lt;Future&gt; 类型的列表(带有复制的元素)传递给CompositeFuture.all
    • 啊,好吧。这听起来有点复杂。我会看看我是否可以实现一种更简单的替代方法。感谢您的帮助:)
    猜你喜欢
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 2022-11-01
    • 2013-12-15
    • 2013-05-23
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多