如果 Kotlin 集合都是接口,怎么能像 class 一样实例化呢?

If Kotlin collections are all interfaces, how come they can be instantiated like a class?

我知道 Kotlin 集合以某种方式映射到 Java 集合 类,但是当我查看文档时,我发现所有 Kotlin 集合都是旨在允许不变性选项,我看不出如何在语法上实例化这些接口。

all Kotlin collections are interfaces meant to allow for the option of immutability

实际上,不是。还有可变集合 (1, 2)。

I don't see how I can syntactically instantiate these interfaces

与任何其他接口一样 - 通过实例化 class,实现该接口:

为方便起见,stdlib 中为此提供了几个函数。

实例化不可变集合:

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/list-of.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/list-of-not-null.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/build-list.html

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/set-of.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/set-of-not-null.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/build-set.html

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/map-of.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/build-map.html

实例化可变集合:

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-mutable-list.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/mutable-set-of.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/mutable-map-of.html

使用特定实现实例化可变集合:

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/array-list-of.html

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/hash-set-of.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/sorted-set-of.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/linked-set-of.html

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/hash-map-of.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/sorted-map-of.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/linked-map-of.html

使用 JS 目标特定实现实例化可变集合:

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/string-set-of.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/linked-string-set-of.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/string-map-of.html https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/linked-string-map-of.html