ジェネリックで指定されたオブジェクトを取り込める独自の「LinkedList」クラスを作成しました。
そのクラスでは、クラスが Comparator を実装するオブジェクトを受け取る sort(ComparatorObject)メソッドが必要です。
その理由は、特に私のテスト オブジェクトである形状について、形状の面積、周囲、タイプなど、ユーザーが選択したさまざまなフィールドでそれらを並べ替えることができるかどうかを確認したいからです。
現在、コンパレータ クラスの 1 つが次のように定義されています。
public class Comparator_Area implements Comparator<Shape>{
@Override
public int compare(Shape shape1, Shape shape2) {
int valueToReturn = 0;
if(shape1.getArea() < shape2.getArea()){
valueToReturn = -1;
}
else if(shape1.getArea() < shape2.getArea()){
valueToReturn = 1;
}
return valueToReturn;
}
}
そして、LinkedList クラスでは、並べ替えメソッドは次のように定義されています (正しいかどうかはわかりませんが、これを行う方法を調べているときに見つけたものです)。
public void sort(Class<? extends Comparator<E>> comparator){
}
当然、並べ替えメソッドで次のようなものを使用できるようにしたいと思います。
comparator.compare(shape1, shape2);
しかし、「比較」を使用することはできず、これをどのように達成する必要があるのか よくわかりません。