如何将ArrayList传入Tasks.whenAllSuccess方法?
解决方法:将ArrayList转换为Task数组传入
嗨,这个问题其实很容易搞定!Tasks.whenAllSuccess()确实支持传入多个Task参数,但它的可变参数版本(Task<?>...)没法直接接收ArrayList。不过我们只需要把ArrayList转换成对应的Task数组,就能完美适配这个方法了。
具体实现代码
假设你已经有一个装满Task的ArrayList:
ArrayList<Task<?>> taskList = new ArrayList<>(); taskList.add(task1); taskList.add(task2); // 可以继续添加更多任务
你只需要调用toArray()方法把列表转成Task数组,再传入whenAllSuccess():
Tasks.whenAllSuccess(taskList.toArray(new Task[0]))
补充说明
- 如果你使用的是Java 8及以上版本,也可以用Stream API来转换数组,写法更简洁:
Tasks.whenAllSuccess(taskList.stream().toArray(Task[]::new)) - 另外,部分版本的Tasks类还提供了直接接收
Iterable<? extends Task<?>>的重载方法,要是你的环境支持的话,直接传ArrayList也是可行的:
不过转数组的方式兼容性更强,不管哪个版本基本都能生效。Tasks.whenAllSuccess(taskList)
这样就能把列表里的所有任务打包传入whenAllSuccess()啦!
内容的提问来源于stack exchange,提问作者Brian Begun
相关产品推荐
相关产品推荐

