Пожалуйста, объясните этот заголовок, который я написал - PullRequest
0 голосов
/ 31 января 2020

Так что я нахожусь в процессе изучения дженериков и подстановочных знаков. Я использую это как заголовок для метода для сортировки измерений в порядке возрастания с помощью пользовательской сортировки выбора, которая использует метод, который я написал в классе 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;
        }
    }

и работает отлично, я просто пытаюсь обернуть мою голову, используя дженерики и подстановочные знаки.

Заранее спасибо!

...