处理Array <t>或IntArray的函数

时间:2018-03-10 23:15:04

标签: generics kotlin

我想创建一个泛型函数,它接受Array<T>IntArray并迭代它们并执行任意操作。很遗憾,IntArray不是Array<T>的子类型。这在Kotlin有可能吗?

1 个答案:

答案 0 :(得分:4)

不,它不是直接可能的,因为IntArray是一个与Array<Int>无关的单独类型,可以允许单个函数同时处理这两个。

但是,您可以定义一个重载,将fun <T> foo(items: Array<T>) { /* ... */ } fun <T> foo(items: IntArray) = foo(items.toTypedArray()) 转换为kotlin-stdlib或提供不同的优化实现:

Array<T>

请参阅:.toTypedArray()

正如您在subscription文档中所看到的,对于next和各种原始数组类型,许多函数都以​​这种方式单独定义(尽管使用单独的实现,这比转换数组更有效),例如.forEach { ... }.toList()