我对整数进行了选择排序并且它正在工作,当我尝试修改程序以使用泛型时,编译器抱怨并且我不知道如何修复它。如果有人能指出一些提示和建设性意见,我将不胜感激。这是代码。
public class SelelctionSort
{
public static void main(String[] args)
{
int[] list = {34, 17, 23, 35, 45, 9, 1};
System.out.println("Original Array: ");
printArray(list);
selectionSort(list);
System.out.println("\nSelection sort:");
printArray(list);
}
//selection sort
public static <E extends Comparable<E>> void selectionSort(E[] list)
{
for(int i=0; i<list.length -1; i++)
{
int iSmallest = i;
for(int j=i+1; j<list.length; j++)
{
if(list[iSmallest].compareTo((list[j])) > 0 )
{
iSmallest = j;
}
}
E iSwap = list[iSmallest];
list[iSmallest] = list[i];
list[i] = iSwap;
}
}
public static <E> void printArray(E[] list)
{
for(int i=0; i<list.length; i++)
{
System.out.print(list[i] + ", ");
}
}
}
以下是javac
吐出来的。
SelelctionSort.java:7: error: method printArray in class SelelctionSort cannot be applied to given types; printArray(list); ^ required: E[] found: int[] reason: inferred type does not conform to declared bound(s) inferred: int bound(s): Object where E is a type-variable: E extends Object declared in method <E>printArray(E[]) SelelctionSort.java:9: error: method selectionSort in class SelelctionSort cannot be applied to given types; selectionSort(list); ^ required: E[] found: int[] reason: inferred type does not conform to declared bound(s) inferred: int bound(s): Comparable<int> where E is a type-variable: E extends Comparable<E> declared in method <E>selectionSort(E[]) SelelctionSort.java:11: error: method printArray in class SelelctionSort cannot be applied to given types; printArray(list); ^ required: E[] found: int[] reason: inferred type does not conform to declared bound(s) inferred: int bound(s): Object where E is a type-variable: E extends Object declared in method <E>printArray(E[])