Проблема bubbleSorting generi c введите Java - PullRequest
0 голосов
/ 15 апреля 2020

путаница / проблема с генериками. Я просто хотел бы иметь возможность сортировать и печатать массив любого типа, который является классом Number или подклассом Number. Сначала я написал метод printArray, который отлично работает. Затем я написал метод bubbleSort, но возникли проблемы с его вызовом в конструкторе. Любая помощь?

public class DAB_NumberAnalyzer<T extends Number>
{
    private T[] array;

    /**
     * Constructor
     * @param array
     */
    public DAB_NumberAnalyzer(T[] array)
    {
        this.array = array;

        bubbleSortArray(array);
        printArray(array);
    }

    public static <T> void printArray(T[] array)
    {
        for(T element : array)
        {
            System.out.printf("%s, ", element);
        }
        System.out.println("");
    }

    public static <T extends Comparable<T>> void bubbleSortArray(T[] array)
    {
        int lastPos;
        int index;
        T temp;

        for(lastPos = array.length - 1; lastPos >= 0; lastPos--)
        {
            for(index = 0; index <= lastPos - 1; index++) 
            {
                if(array[index].compareTo(array[index]) > 0)
                {
                    temp = array[index];
                    array[index] = array[index + 1];
                    array[index + 1] = temp;
                }
            }
        }
    }
}

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

Ошибка: метод bubbsleSortArray (T []) в типе DAB_NumberAnalyzer неприменимо для аргументов (T []).

Не понимаю, как я не получаю эту ошибку при вызове метода printArray.

Я помещаю что-то в неправильное место ?

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

1 Ответ

1 голос
/ 15 апреля 2020

bubbleSortArray ожидает, что T расширится Comparable<T>. T вашего класса расширяет Number, а не Comparable. Вы можете изменить объявление класса на DAB_NumberAnalyzer<T extends Number & Comparable<T>>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...