Перегрузка java-методов List разного типа

Рейтинг: 2Ответов: 2Опубликовано: 01.12.2014

Добрый день!

Насколько корректным является перегрузка метода List<Type> 'ом, при различных Type,

RetrunType1 func(List<Type1> arg);
ReturnType2 func(List<Type2> arg);

При условии, что функции возвращают разные объекты и Type1!=Type2.

Спасибо.

Ответы

▲ 3Принят

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

Обновление

Только что проверил на версиях 1.5 — 1.8. Везде компилятор выдаёт одну и ту же ошибку — "name clash: methods have the same erasure". Как вам удаётся это скомпилировать — неизвестно, ведь type erasure для дженериков работал всегда с момента их появления в принципе, т.е. с 1.5.

▲ 2

Абсолютно нормальная практика. В библиотеках java такое используется направо и налево.

update:

Пример - открываем самую что не на есть стандартную библиотеку в java - java.lang.Math и смотрим на методы abs, min, max, round и много других. исправление. Вот только generic'и в java никудышние... И для списков List оно не заработает.