Generic Comparatorに示されているサンプルに基づいて、汎用コンパレータとして使用する Java クラスを構築しています。コンパレーター用に構築しているコンストラクターは次のとおりです。
public GenericComparator(java.lang.reflect.Field sortField, boolean ascending){
.... }
上記のコンストラクターを使用すると、並べ替えフィールドを取得できますが、フィールドがインターフェイスを実装しているかどうかをコンパイラーが知る方法はなくComparable
、コンストラクターを呼び出す開発者は、インターフェイスを実装していないフィールドを渡す可能性がありComparable
ます。
フィールドがインターフェイスを実装していることを確認するために instanceof チェックを使用して、これをコンパイル時エラーにし、実行時に処理しない方法があるかどうか疑問に思っています。
Collections.sort(...)
Type 宣言にも同様の実装があります。
public static <T extends Comparable<? super T>> void sort(List<T> list) {
...
}