在Kotlin代码中使用listOf()
或arrayListOf()
是否有最佳实践?
它们实际上都返回相同的实现,并且我理解listOf更好,因为它与特定的实现无关。
Here是它的文档吗?
它以语言样式记录在任何地方吗?
还有其他理由要使用每一个吗?
最佳答案
一个值得注意的重要区别是listOf
提供了一个只读的List
,而arrayListOf
提供了一个MutableList
。绝对最好在可能的情况下使用只读数据结构。
val l1 = listOf(1)
l1.add(2) //not possible
val l2 = arrayListOf(2)
l2.add(1) //ok
另一方面,如果您不完全依赖类型推断,则还可以使ArrayList的变量为只读:
val l3: List<Int> = arrayListOf(2)
l3.add(1) //not possible anymore
不使用
arrayListOf
的要点是您要依赖库来选择实际的实现。截至目前,这恰好是ArrayList
,可能会在将来的版本中更改。例如,如果Kotlin决定添加一个更强大的ArrayList向后兼容版本,则他们可以更改实现,并且您的代码将继续工作(以一种改进的方式)。另一方面,如果您想依靠ArrayList(通过arrayListOf
),则可能有一个具体方案,仅此实现是可以接受的。