gpt4 book ai didi

kotlin - LinkedHashMap 在 Kotlin 中创建什么?

转载 作者:行者123 更新时间:2023-12-02 01:39:18 24 4
gpt4 key购买 nike

我是 Kotlin 新手,在文档中遇到了许多实例,其中 commonjsnativejvm 标签列出了不同的返回值或类类型。谁能解释一下这到底是什么意思?

这是一个例子:

enter image description here

我的两个问题是:

  1. classtypealiasopen class 有何不同?
  2. 为什么它们在创建相同的东西时似乎会返回不同的值?

最佳答案

文档告诉您 LinkedHashMap 的声明可以期待什么看起来像,在不同平台上编写代码时 - Kotlin/JS、Kotlin/JVM、Kotlin/Native。 “通用”声明是其他三个声明的“交集” - 三者之间的“通用”事物,如果您正在编写跨平台代码,这很有用。

详细解释每个平台(请注意,所有 3 个平台都是通用平台的“超集”):

常见:

class LinkedHashMap<K, V> : MutableMap<K, V>

LinkedHashMap是一个具有两个泛型参数的类 KV ,并且它实现了 MutableMap<K, V> .

JVM:

typealias LinkedHashMap<K, V> = LinkedHashMap<K, V>

LinkedHashMap<K, V>是 Java 的 java.util.LinkedHashMap<K, V>类型别名(即另一个名称)类(class)。包名java.util文档本身中没有显示,这可能会令人困惑,但您可以单击链接来查找:)

请注意java.util.LinkedHashMap<K, V>实现java.util.Map<K, V> ,当移植到 Kotlin 时,意味着它实现了 MutableMap<K, V> 。 (我这么说是因为这是共同声明中的内容之一)

JS:

open class LinkedHashMap<K, V> : 
HashMap<K, V>,
MutableMap<K, V>

LinkedHashMap是一个具有两个泛型参数的类 KV ,并且它实现了 MutableMap<K, V> 。它还继承自 HashMap<K, V> ,它是 open ,这意味着您可以继承它。

native :

typealias LinkedHashMap<K, V> = HashMap<K, V>

LinkedHashMap<K, V>只是 HashMap<K, V> 的另一个名称(这次是 Kotlin 的 kotlin.collections.HashMap ,而不是 Java 的。单击链接即可找到。)另请注意 HashMap<K, V>实现MutableMap<K, V>也是。

Why do they seem to return different values for creating the same thing?

这些不是函数,并且它们不返回任何内容。这些是类 LinkedHashMap声明 ,并且某些平台可能会以不同的方式声明它们,因为它们是不同的平台!例如,为什么 Kotlin/JVM 会创建一个全新的 LinkedHashMap ,当JDK中已经有一个的时候?所以他们只是说kotlin.collections.LinkedHashMap只是 java.util.HashMap 的另一个名称。另一个例子是 Kotlin/Native:看起来 HashMap他们实现的已经链接起来,所以我们不需要一个全新的类。

只要它们在这些不同平台上实现的内容满足“通用”声明的要求(即两个泛型类型参数 KV ,并实现 MutableMap<K, V> ),就可以了。

关于kotlin - LinkedHashMap 在 Kotlin 中创建什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71891601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com