Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Kotlin:泛型数组_Arrays_Generics_Kotlin - Fatal编程技术网

Arrays Kotlin:泛型数组

Arrays Kotlin:泛型数组,arrays,generics,kotlin,Arrays,Generics,Kotlin,我正在写一个B树,它在一个节点中可能有许多键,我遇到了一个问题。当我创建一个整数数组时一切正常: class Node<K: Comparable<K>> (val t: Int) { val keys: Array<Int?> = Array<Int?> (t*2-1, {null}) } 问题是如何创建泛型数组? UPD:所有回复的Thx!对于我的目标来说,可变列表似乎是一个很好的解决方案。您只需使用列表,而不需要将具体化 要将泛型参

我正在写一个B树,它在一个节点中可能有许多键,我遇到了一个问题。当我创建一个整数数组时一切正常:

class Node<K: Comparable<K>> (val t: Int) {
    val keys: Array<Int?> = Array<Int?> (t*2-1, {null})
}
问题是如何创建泛型数组?


UPD:所有回复的Thx!对于我的目标来说,可变列表似乎是一个很好的解决方案。

您只需使用
列表
,而不需要将
具体化

要将泛型参数与
数组
一起使用,需要将泛型参数
具体化
(以便获得它的类)

不能对类使用
具体化的
,只能对函数使用,函数必须是
内联的

因此我建议您尽可能晚地使用
,使用具体的或非
具体化的
泛型类型

同时,您可以使用如下函数

inline fun <reified K : Comparable<K>> computeKeys(t: Int): Array<K?> =
    Array(t * 2 - 1) { null }
inline-fun-computeKeys(t:Int):数组=
数组(t*2-1){null}

请参阅:如果您没有执行性能关键型操作,则使用ArrayList而不是array是一个更好的选择。如果可能与true重复,请尽可能使用
列表
而不是
数组
。JVM上的阵列已过时:(
'Kotlin: Cannot use 'K' as reified type parameter. Use a class instead.'
inline fun <reified K : Comparable<K>> computeKeys(t: Int): Array<K?> =
    Array(t * 2 - 1) { null }