在Kotlin代码中是否有使用listOf()
或arrayListOf()
的最佳实践?
它们实际上都返回相同的实现,并且我理解listOf更好,因为它与特定的实现无关。
Here是它的文档吗?
它以语言样式记录在任何地方吗?
还有其他使用理由吗?
答案 0 :(得分:6)
一个值得注意的重要区别是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
),则可能有一个具体方案,只有这种实现是可以接受的。