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

时间:2016-02-29 09:22:25

标签: java arrays generics

我试图在我的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());
}

关于我为什么会收到此错误的任何想法?所有帮助赞赏!谢谢!

2 个答案:

答案 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泛型根本不使用原始类型。通用约束只会限制你更远。