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.Takaminewheapsort().sort(arr)我真是太感谢你了。我是一名学生,真的只是在努力学习。
public <E extends Comparable<E>> void sort(E[] array)