首页 > 解决方案 > Kotlin 不可变数组

问题描述

Kotlin 列表有独立的可变和不可变变体,前者派生自后者。但据我了解,对于数组,本身没有单独的不可变类型。相反,不可变数组声明为Array<out Foo>.

这个对吗?

如果是这样,那么数组和列表类型在这方面设计不同的原因是什么?

标签: arrayskotlin

解决方案


这是正确的,Arrays 都是可变的,数组没有单独的只读接口。

这样做的原因是数组是低级构建块,通常不应该在 API 中公开或通过封装边界,一般来说,没有理由在数据结构实现之外的列表上使用数组,有时,性能-关键代码。人们应该更喜欢列表和其他集合来进行更高级别的操作。

因此,鉴于数组通常由一个单一的、一致的逻辑块封装和“拥有”,因此为不公开变异函数的数组引入一个单独的类型并不是那么实际。


推荐阅读