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

咨询代码new ArrayList<>(Collections.emptyList())的含义

咨询代码new ArrayList<>(Collections.emptyList())的含义

嘿,我来给你拆解一下这段代码到底是啥意思~

这段代码List<SomeClass> someClassList = new ArrayList<>(Collections.emptyList())确实是在初始化一个空的ArrayList,不过其实是绕了个小弯子来完成这件事,我拆成两部分给你讲:

  • 先看Collections.emptyList():这个方法返回的是一个不可变的空列表实例——它是Java内置的一个单例空列表,不能对它执行add、remove这类修改操作,大小固定为0。
  • 再看ArrayList的构造方法new ArrayList<>(Collections.emptyList()):这个构造方法的作用是把传入的集合里的所有元素复制到新创建的ArrayList中。因为传入的是空列表,所以最终得到的someClassList就是一个可以正常修改的空ArrayList——之后你完全可以给它添加、删除元素,和普通的空ArrayList没啥区别。

不过这里有个小细节:其实直接写new ArrayList<>()就能得到一样的可修改空列表,效果几乎完全一致(JDK8及以后,ArrayList无参构造的初始底层数组容量也是0)。用new ArrayList<>(Collections.emptyList())属于多此一举的写法,可能是某些开发者的习惯,或者想刻意强调“我要的就是空列表”,但实际没必要。

如果你的场景里不需要修改这个列表,那直接用Collections.emptyList()会更高效,因为它是复用的单例,不用每次创建新的ArrayList对象。

总结一下:

  • 这段代码的最终结果:得到一个大小为0、支持修改操作的ArrayList实例
  • 更简洁的等价写法:List<SomeClass> someClassList = new ArrayList<>();

备注:内容来源于stack exchange,提问作者Corporativo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 11:09:31