私は現在Javaで働いているコンピュータサイエンスの2年生で、最近ジェネリックを始めました。ジェネリックスを使用するソートアルゴリズムのリストが与えられ、それらを使用して整数のリスト(プリミティブintではない)をソートするという課題があります。ソートクラスはComparableを拡張するジェネリックスを使用するため、整数配列を渡すだけで問題はないと思いましたが、ビルド出力は互換性のない型を出し続けます。
関連するコードは以下のとおりです。
メインプログラムの一部
final int NUMITEMS = 100000;
Integer[] list = new Integer[NUMITEMS];
int dataSize = 0;
//method reads contents of a file into array and returns number of objects
System.out.println((dataSize = readDataFile(list)));
SelectionSort SS = new SelectionSort(list, dataSize);//problem is here
そして、そのまま提供され、そのまま使用されることが期待されるSelectionSortアルゴリズム
class SelectionSort<T extends Comparable<? super T>> implements SortAlgorithm<T> {
public void sort ( T [ ] theArray, int size ) {
for (int last = size-1; last > 0 ; last--)
{
int largest = 0;
for (int scan = 1; scan <= last; scan++)
if (theArray[scan].compareTo(theArray[largest])>0)
largest = scan;
/** Swap the values */
T temp = theArray[largest];
theArray[largest] = theArray[last];
theArray[last] = temp;
}
} // method selectionSort
私が抱えている問題は、SelectionSortの宣言にあります。これは、コンストラクターを指定された型に適用できないというエラーを返します。ここや他の場所での検索で読んだことから、この種の問題は通常、intを使用するときに発生しますが、整数で機能しない理由がわかりません。私はまだジェネリックスの概念に同意しているので、問題に関する洞察をいただければ幸いです。よろしくお願いします!