перегрузка метода с ArrayList() на ArrayList()

В общем решал задачу:

Считать по ключу с файла строки или целые числа, отсортировать и записать в другой файл.

Стал писать и решил я сделать метод сортировки ArrayList в аргументах.

Ну и решил я его значит перегрузить и один сделать sort(ArrayList<Integer> array), а второй sort(ArrayList<String> array).

Ну и тут то Intellij IDEA меня и обломала с сообщением:

fix method 'sort' parameters with bounded wildcards

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

Но информации не нашел, а как спросить у гугла и не знаю. Он меня завел не в те дебри.

Может кто объяснить почему все же так происходит или может ресурс какой, где про это написано по подробнее.

Буду благодарен за любые ответы.


Ответы (1 шт):

Автор решения: Anton Shchyrov

В Java принята модель дженериков со стиранием типов. Т.е. конкретный тип существует только на этапе написания кода. А при компиляции все дженерик-типы стираются и остается только абстрактный Object.

В итоге ваши объявления

sort(ArrayList<Integer> array)
sort(ArrayList<String> array)

преобразовываются в

sort(ArrayList array)
sort(ArrayList array)

и компилятор вам честно сообщает, что у вас объявлено два идентичных метода

→ Ссылка