我有一个包含数组的泛型类。该数组可以是任何数据类型(Double,Integer,String ...),我正在尝试学习如何在构造之后对此数组进行排序。我写了一个排序方法,用于在构造之后对数组进行排序。但是,由于不匹配,java禁止使用mysort方法对通用数组进行排序。
public class SortingTest<E> {
private E[] array;
//constructor which creates an object and sorts its array via mysort method.
public SortingTest(E[] N){
this.array = N;
mysort(this.array);
}
//sorts array.
private static<T extends Comparable<T>> void mysort(T[] arr){
T temp = null;
//Bubble sort increasing order.
for(int j=0; j<arr.length; j++){
for(int i=1; i<arr.length; i++){
if(arr[i-1].compareTo(arr[i]) > 0 ){
temp = arr[i-1];
arr[i-1] = arr[i];
arr[i] = temp;
}
}
}
}
}
我该如何克服这个问题?任何帮助表示赞赏。
答案 0 :(得分:3)
mysort
方法需要通用元素T
实现Comparable<T>
,但通用E
不会声明实现Comparable<E>
。将声明更改为:
public class SortingTest<E extends Comparable<? super E>> {
//rest of your code...
}