3

私はこのようなコンパレータを持っています:

public class XComparator implements Comparator<X>, Serializable {
}

これは現在、YがXを実装するYオブジェクトのリストをソートするために使用されています

XComparatorを拡張するYのコンパレータを作成して、Yのブールデータメンバーに基づいて比較し、super.compareと呼ばれるようにします。

私はこれに対していくつかの異なるアプローチを試しましたが、どれもまったく機能していないようです。これも可能ですか?

4

2 に答える 2

9

XComparatorジェネリックパラメーターをに拡張して変更するComparatorことはできませんが、内部的にのみそれを委任するクラスをY作成することはできます。何かのようなもの:YComparatorXComparator

public class YComparator implements Comparator<Y>, Serializable {
    private XComparator xComparator = new XComparator();

    @Override
    public int compare(Y y1, Y y2) {
         // compare y1.booleanData with y2.booleanData
         if (...)
             ...;

         // else otherwise:
         return xComparator.compare(y1, y2);
    }
}
于 2013-02-26T21:02:45.120 に答える
0

継承の代わりに委任を使用します。

YComparatorには、XComparatorが含まれ、XComparatorに委任する必要があります。

于 2013-02-26T21:02:55.540 に答える