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
Java 如何将整数数组传递给需要'array<;的方法;T>;`?_Java_Arrays_Generics_Kotlin - Fatal编程技术网

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))