整数を使用して選択ソートを実行しましたが、機能していましたが、ジェネリックを使用するようにプログラムを変更しようとすると、コンパイラーが不平を言い、修正方法がわかりません。誰かがいくつかのヒントや建設的なコメントを指摘できれば、私は感謝しています. これがコードです。
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[])