는 좀 도서관에서 코드 발견 :변환 할 수없는 유형; 'Comparator <T>'을 'Comparator <?'로 변환 할 수 없습니다. 슈퍼 개체> '
이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'의 호환성을 보장하기 때문에 모든 상황에서 작동 할 것입니다. 이것은 다소 불쾌한 구현 일뿐입니다. 제네릭보다 선행하고 포팅 된 것일 수 있습니다. –