在 Kotlin 代码中使用listOf()
或是否有任何最佳实践arrayListOf()
?它们实际上都返回相同的实现,我理解 listOf 更好,因为它与特定实现无关。
这是它的文档吗?
它是否记录在语言风格的任何地方?
是否还有其他原因需要使用每一种?
一个显着且重要的区别是,它listOf
为您提供只读, List
而arrayListOf
为您提供MutableList
. 尽可能使用只读数据结构绝对是首选。
val l1 = listOf(1)
l1.add(2) //not possible
val l2 = arrayListOf(2)
l2.add(1) //ok
Run Code Online (Sandbox Code Playgroud)
另一方面,如果您不完全依赖类型推断,您也可以将 ArrayList 的变量设为只读:
val l3: List<Int> = arrayListOf(2)
l3.add(1) //not possible anymore
Run Code Online (Sandbox Code Playgroud)
不使用的要点arrayListOf
是你想依靠库来选择实际的实现。到目前为止,这恰好是ArrayList
在未来版本中可能会改变的。例如,如果 Kotlin 决定添加一个更强大的向后兼容版本的 ArrayList,他们可以更改实现并且您的代码将继续工作(以改进的方式)。另一方面,如果您想依赖 ArrayList (via arrayListOf
),您可能有一个具体的场景,只有这个实现是可以接受的。