Kotlin:从泛型集合到泛型数组
Posted
技术标签:
【中文标题】Kotlin:从泛型集合到泛型数组【英文标题】:Kotlin: Generic Collection to Generic Array 【发布时间】:2018-03-03 20:25:26 【问题描述】:如何从通用collection 中获取通用array?
我做了以下事情:
val genericArray: Array<E> = (genericCollection as java.util.Collection<E>).toArray() as Array<E>
这是正确的方法还是有更优雅的解决方案?
期待您的帮助!
编辑
我最终编写了这个辅助扩展:
fun <E> Collection<E>.toUntypedArray(): Array<E>
@Suppress("UNCHECKED_CAST")
return arrayOf(size, this) as Array<E>
你们中有人有更好的解决方案吗?
【问题讨论】:
public actual inline fun <reified T> Collection<T>.toTypedArray(): Array<T>
有什么问题?
这样可以吗? listOf("one", "two").toTypedArray<Any>()
如果不是,我不知道你到底想在这里实现什么......
【参考方案1】:
您不必将其强制转换为 Java 集合。
fun example ()
val collection: Collection<Int> = listOf()
val typeArray = collection.toTypedArray()
fun <T> example2(collection: Collection<T>)
val typeArray = arrayof(collection)
【讨论】:
但这就是问题所在。 toTypedArray() 是一个具体化的函数,不能将泛型作为输入。 这也不起作用,因为返回一个 ArrayArray<Collection<E>>
问题:arrayOf(*collection.toTypedArray())
以上是关于Kotlin:从泛型集合到泛型数组的主要内容,如果未能解决你的问题,请参考以下文章
JavaSE基础八----<集合>泛型集合体系Collection接口中的方法