Я нашел этот код в некоторой библиотеке:Неконвертируемые типы; не может быть выбрано 'Компаратор <T>' to 'Компаратор <? супер Object>»
public static <T> List<T> sort(
Collection<T> collection,
Comparator<T> comparator)
{
Object[] a = collection.toArray(new Object[collection.size()]);
//noinspection unchecked
Arrays.sort(a, (Comparator<? super Object>) comparator);
return cast(Arrays.asList(a));
}
Моя шашка клянется
неконвертируемых типов; не может бросить
java.util.Comparator<T>
к 'java.util.Comparator<? super java.lang.Object>
При каких обстоятельствах этот код может работать?
Это плохой код. Они должны были работать со списками и использовать 'Collections.sort' вместо использования массивов и полагаться на стирание, как это. – user2357112
Это компиляция в javac и eclipse с предупреждением. Какой «контролер» вы используете? – shmosel
Мой плохой; Теперь я понимаю, что это чужой ужасный код библиотеки. Он будет работать при любых обстоятельствах, поскольку вы гарантируете совместимость «Comparator» и «Collection». Это довольно неприятная реализация - она может предшествовать дженерикам и была перенесена? –