我發現這個代碼在某些庫:不可轉換類型;不能將'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
我的不好;我現在意識到這是別人可怕的庫代碼。它可以在任何情況下工作,因爲您保證「比較器」和「集合」的兼容性。這只是一個非常糟糕的實現 - 它可能早於仿製藥並已被移植? –