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
相关产品推荐
相关产品推荐

