Java 如何将整数数组传递给需要'array<;的方法;T>;`?
我已经皈依了科特林。问题是我不知道如何调用这个方法 爪哇 这是错误的Java 如何将整数数组传递给需要'array<;的方法;T>;`?,java,arrays,generics,kotlin,Java,Arrays,Generics,Kotlin,我已经皈依了科特林。问题是我不知道如何调用这个方法 爪哇 这是错误的 为中的T绑定的类型参数 有趣的外壳排序(a:数组):单位 不满足:推断的IntArray类型不是Compariable的子类型 返回IntArray,而不会像人们可能假设的那样扩展数组。因为Kotlin为各种原语提供了专门的数组类型,从而避免了装箱开销IntArray对应于Java的int[]。ShellSort.sort方法(Kotlin和Java)需要装箱版本 您可以使用如下扩展方法将IntArray转换为Array:
为中的T绑定的类型参数
有趣的外壳排序(a:数组):单位
不满足:推断的IntArray类型不是Compariable的子类型
返回IntArray
,而不会像人们可能假设的那样扩展数组。因为Kotlin为各种原语提供了专门的数组类型,从而避免了装箱开销IntArray
对应于Java的int[]
。ShellSort.sort
方法(Kotlin和Java)需要装箱版本
您可以使用如下扩展方法将IntArray
转换为Array
:
val array = intArrayOf(5, 3, 0, 2, 4, 1, 0, 5, 2, 3, 1, 4).toTypedArray()
shellSort(array)
或者正如@KirillRakhman建议的那样,直接创建一个盒装版本:
shellSort(arrayOf(5, 3, 0, 2, 4, 1, 0, 5, 2, 3, 1, 4))
这条线
shellSort(arrayOf(array))
不将阵列中的数组
强制转换为常规的数组
,而是将其包装在类型为数组
的单例数组中。按照@miensol
的建议,使用IntArray.toTypedArray()
将其转换为通用数组。谢谢您的回答,但是“IntArray.toTypedArray()”可能适用于Java,但不适用于Kotlin。您还可以通过调用arrayOf(array)直接使用arrayOf(5,3,0,2,4,1,0,5,2,3,1,4)
您创建了一个类型为array
的2D数组,这就是为什么会出现错误消息的原因。
Type parameter bound for T in
fun <T : Comparable<T>> shellSort(a: Array<T>) : Unit
is not satisfied: inferred type IntArray is not a subtype of Comparable<IntArray>
val array = intArrayOf(5, 3, 0, 2, 4, 1, 0, 5, 2, 3, 1, 4).toTypedArray()
shellSort(array)
shellSort(arrayOf(5, 3, 0, 2, 4, 1, 0, 5, 2, 3, 1, 4))
shellSort(arrayOf(array))