You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中Typed Array是什么?求详细解释及示例

关于Kotlin中Typed Array与toTypedArray的详解

1. 什么是Typed Array(类型化数组)

在Kotlin里,Typed Array指的是元素类型明确的泛型数组,用Array<T>表示,其中T是元素的具体类型(比如String、自定义的User类等)。它和Java中的T[]完全对应,比如Array<String>对应Java的String[],Array<Int>对应Java的Integer[]。

注意:Kotlin还有专门的原始类型数组(比如IntArray、DoubleArray),这些对应Java的基本类型数组(int[]、double[]),不属于这里说的泛型Typed Array范畴。

2. toTypedArray()的作用与用法

toTypedArray()是Kotlin标准库给**集合(Collection)和序列(Sequence)**提供的扩展函数,核心作用就是把集合/序列里的元素转换成对应的Array<T>类型数组。

示例1:List转Typed Array

最常见的场景是把List转成类型明确的数组:

val fruitList = listOf("Apple", "Banana", "Orange")
val fruitArray: Array<String> = fruitList.toTypedArray()

// 遍历数组
fruitArray.forEach { println(it) }
// 输出结果:Apple、Banana、Orange

示例2:Set转Typed Array

Set转换后,数组元素顺序和Set的迭代顺序一致:

val scoreSet = setOf(85, 90, 95)
val scoreArray: Array<Int> = scoreSet.toTypedArray()

// 直接打印数组内容
println(scoreArray.contentToString()) // 输出:[85, 90, 95]

示例3:惰性序列转Typed Array

如果是Sequence(惰性求值的序列),调用toTypedArray()会触发序列的计算,然后生成数组:

// 生成包含2、4、6的惰性序列
val evenSequence = generateSequence(2) { it + 2 }.take(3)
val evenArray: Array<Int> = evenSequence.toTypedArray()

println(evenArray.contentToString()) // 输出:[2, 4, 6]

3. 别搞混:toTypedArray()和toArray()的区别

很多人会把这两个方法弄混,简单说:

  • toTypedArray()返回的是类型明确的Array<T>,拿到就能直接用,不用强转。
  • toArray()是Java集合的原生方法,返回的是Array<Any?>,如果要转成指定类型的数组,得手动强转,在Kotlin里优先用toTypedArray()更安全。

对比示例:

val animalList = listOf("Cat", "Dog")
val typedArray = animalList.toTypedArray() // 类型是Array<String>,直接用
val rawArray = animalList.toArray() // 类型是Array<Any?>,需要强转才能用:rawArray as Array<String>

内容的提问来源于stack exchange,提问作者Roop Kishore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:48:27