Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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 方法(E[])不适用于参数(int[])_Java_Arrays_Generics - Fatal编程技术网

Java 方法(E[])不适用于参数(int[])

Java 方法(E[])不适用于参数(int[]),java,arrays,generics,Java,Arrays,Generics,我正在尝试实现我的排序方法,该方法在我的int[]上使用泛型E[]作为参数。我收到错误消息: 类型HeapSort中的方法sort(E[])不适用于参数(int[]) 我的代码如下: public <E extends Comparable<E>> void sort(E[] array){ //my code } public void排序(E[]数组){ //我的代码 } publicstaticvoidmain(字符串[]args){ int[]arr=新

我正在尝试实现我的排序方法,该方法在我的
int[]
上使用泛型
E[]
作为参数。我收到错误消息:

类型HeapSort中的方法sort(E[])不适用于参数(int[])

我的代码如下:

public <E extends Comparable<E>> void sort(E[] array){

//my code

}
public void排序(E[]数组){
//我的代码
}

publicstaticvoidmain(字符串[]args){
int[]arr=新int[30];
对于(int rep=0;rep

你知道我为什么会犯这个错误吗?感谢大家的帮助!谢谢大家!

基元类型不能替换泛型类型参数(即使可以,它也不能满足
扩展可比较的
类型绑定,因为基元类型不扩展任何类,也不实现任何接口)

您可以将您的
int[]
替换为
Integer[]
,它将正常工作

除了该错误之外,
sort(arr)
不会返回任何内容,因此您不能对其执行
toString

您可以将其替换为:

new HeapSort ().sort(arr); // you must create an instance of the class that contains
                           // the sort method in order to call it
System.out.println(Arrays.toString(arr));

让我们看看你在那里写了什么

public <E extends Comparable<E>> void sort(E[] array)
public void排序(E[]数组)
这是一个名为sort的方法。它具有带约束的泛型参数。约束条件是,无论您输入了什么通用参数,它都必须实现Compariable

int
没有实现
compariable
,事实上
int
没有实现任何东西


Java泛型根本不适用于基本类型。通用约束只会进一步限制您。

System.out.println(sort(arr).toString())无效,因为此
sort()
方法返回
void
。错误消息非常清楚。你有什么不明白的?非常感谢大家。我现在觉得自己有点傻,因为这似乎是天经地义。但是,我现在收到错误:“-无法对数组类型Integer[]调用sort()。谢谢你的支持help@A.Takami您的排序方法应该是静态的吗?您的代码尝试从静态上下文(主方法)调用它,而不创建包含
sort
的类的实例。我的sort方法不是静态的。是的,我只是想用任何方式调用我的
sort
。当我发布这篇文章的时候,我真的没有多想。从main调用我的非静态排序的正确方法是什么?@a.Takami
newheapsort().sort(arr)public <E extends Comparable<E>> void sort(E[] array)