You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Optional<List<Integer>>转换为Optional<ArrayList<Integer>>

解决Optional<List>转Optional<ArrayList>的问题

你之前的写法错误在于直接将Optional对象传入ArrayList的构造器,而ArrayList的构造器只接受Collection类型的参数,不是Optional。正确的做法是先从Optional中提取内部的List,再将其转换为ArrayList,最后重新包装成Optional。

正确转换代码

Optional<List<Integer>> listOne = someAPI.call();
// 使用map方法转换内部元素类型
Optional<ArrayList<Integer>> listTwo = listOne.map(ArrayList::new);

或者用lambda表达式的等价写法:

Optional<ArrayList<Integer>> listTwo = listOne.map(list -> new ArrayList<>(list));

原写法错误原因

  • 第一种写法new ArrayList<>(listOne):listOne是Optional<List<Integer>>类型,并非Collection,构造器参数类型不匹配,编译报错。
  • 第二种写法Optional.of(new ArrayList(listOne)):同样是把Optional对象传给ArrayList构造器,构造器不接受该类型,导致编译错误。

内容的提问来源于stack exchange,提问作者DATATruejji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:57:17