kotlin 中什么是类型化数组

Roo*_*ore 11 android kotlin

我无法清楚地理解 kotlin 中的类型化数组是什么。我在 kotlin 中看到了 toTypedArray 函数。但没有看到它的任何正确定义,就像它到底做什么一样。谁能举例说明一下。

谢谢

Jof*_*rey 7

数组是通用数据结构,因为它们可以包含不同类型的元素。例如,您可以有Array<Int>或。Array<String>

没有单独的“类型化”数组概念。名称的原因toTypedArray(我猜)是为了将它与toArray()返回 an 区分开来Array<Any?>(没有关于其元素的有用类型信息,因为Any?在 Kotlin 中一切都是 a)。

这两个存在的原因是因为在不知道元素类型的情况下无法创建 JVM 上的数组。这意味着,一般来说,您不能创建任意数组,因为泛型在运行时会被删除,因此您当时实际上不知道正确的元素类型。这就是简单的toArray方法返回Array<Any?>或采用额外数组参数的原因。额外的参数允许避免创建目标数组,或者至少在运行时提供足够的类型信息来创建相同类型的数组。

在 Kotlin 中,我们可以更进一步,实际使用具体化类型来使用我们在编译时拥有的信息来生成更具体的代码,例如创建特定类型数组的代码(不是通用的,而是直接使用正确的元素)基于调用站点信息的类型)。这就是toTypedArray通过具体化其类型参数所做的事情。