【问题标题】:If Kotlin collections are all interfaces, how come they can be instantiated like a class?如果 Kotlin 集合都是接口,那怎么能像类一样实例化呢?
【发布时间】:2021-02-26 15:43:06
【问题描述】:

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

【问题讨论】:

  • 您可以实例化其中一个实现接口的类,这就是 setOfmapOflistOf(您应该使用的)等方法所做的。
  • 在JVM中listOf()返回从Array.asList()返回的实例,mutableListOf()返回ArrayList()的实例等。在Kotlin/Native或Kotlin/JS实现是他们自己的,你可以检查来源。

标签: java kotlin arraylist collections interface


【解决方案1】:

所有 Kotlin 集合都是旨在允许选择不变性的接口

其实不是。还有可变集合(12)。

我不明白如何在语法上实例化这些接口

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

为方便起见,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

【讨论】:

    猜你喜欢
    • 2011-12-25
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2017-01-01
    • 2011-11-24
    • 1970-01-01
    • 2021-08-17
    • 2015-05-07
    相关资源
    最近更新 更多