Так что я нахожусь в процессе изучения дженериков и подстановочных знаков. Я использую это как заголовок для метода для сортировки измерений в порядке возрастания с помощью пользовательской сортировки выбора, которая использует метод, который я написал в классе Shape (compareTo). Я знаю, как правильно написать алгоритмы сортировки выбора, по большей части, единственное, что сбивает меня с толку, это то, ПОЧЕМУ этот заголовок работает при вызове одного из моих методов класса Shape в методе dimensionSort:
public static <T extends Comparable<? super T>> void dimensionSort( RegOctagon [] arr)
но этого заголовка нет:
public static void dimensionSort( Comparable<? extends Shape> [] arr)
Мой окончательный код выглядит так:
public static <T extends Comparable<? super T>> void dimensionSort( T [] arr) {
for (int i = 0; i < arr.length - 1; ++i) {
int minIndex = i;
for (int j = i + 1; j < arr.length; ++j) {
if (arr[j].compareTo(arr[minIndex]) < 0) {
minIndex = j;
}
}
T temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
и работает отлично, я просто пытаюсь обернуть мою голову, используя дженерики и подстановочные знаки.
Заранее спасибо!