我试图在我的E[]
上实现我的排序方法,该方法将通用int[]
作为参数。我收到错误:
HeapSort类型中的方法sort(E [])不适用于参数(int [])。
我的代码如下:
public <E extends Comparable<E>> void sort(E[] array){
//my code
}
public static void main(String[] args){
int[] arr = new int[30];
for(int rep = 0; rep < arr.length; rep++){
arr[rep] =(int )(Math.random() * 100 + 0);
}
System.out.println("The unsorted Array: ");
System.out.println(sort(arr).toString());
}
关于我为什么会收到此错误的任何想法?所有帮助赞赏!谢谢!
答案 0 :(得分:4)
原始类型不能替换泛型类型参数(即使它可以,它也不能满足您的extends Comparable<E>
类型限制,因为原始类型不会扩展任何类并且不实现任何接口)。
您可以将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));
答案 1 :(得分:1)
让我们看看你在那里写的东西。
public <E extends Comparable<E>> void sort(E[] array)
这是一种名为sort的方法。它具有带约束的泛型参数。约束条件是无论您放入哪个泛型参数,它都必须实现Comparable。
int
没有实现Comparable
,事实上int
没有实现任何内容。
Java泛型根本不使用原始类型。通用约束只会限制你更远。