私はいくつかのライブラリにこのコードを見つけました:変換できないタイプ。 '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));
}
マイチェッカーが
Inconvertible種類を誓います。このコードが動作する可能性がある状況下では
java.util.Comparator<T>
java.util.Comparator<? super java.lang.Object>
" へ
をキャストすることはできませんか?
これは悪いコードです。彼らはリストを使って作業し、配列を使い、このような消しゴムに頼るのではなく、 'Collections.sort'を使いました。 – user2357112
これはjavacとeclipseで警告とともにコンパイルします。どのような「チェッカー」を使用していますか? – shmosel
私の悪い;私は今、これが他の誰かのひどい図書館のコードであることを認識しています。 'Comparator'と' Collection'の互換性を保証するので、あらゆる状況下で動作します。これはちょっと厄介な実装です。ジェネリックよりも前に移植されている可能性があります。 –