我创建了自己的“LinkedList”类,它可以接受使用泛型指定的对象。
在该类中,我希望有一个 sort(ComparatorObject)方法,该方法接受一个Class实现Comparator的对象。
原因在于,对于我的测试对象,特别是Shapes,我想看看我是否可以按用户选择的各个字段对它们进行排序,例如形状的区域,周长,类型等。
现在,我的一个比较器类定义如下:
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类中,我的sort方法定义如下(我不知道它是否正确,但它是我在查找如何执行此操作时发现的):
public void sort(Class<? extends Comparator<E>> comparator){
}
当然,我希望能够在sort方法中使用这样的东西:
comparator.compare(shape1, shape2);
但是我不能使用“比较”,我真的不知道我应该怎么做到这一点。
答案 0 :(得分:3)
您应该在排序方法中发送Comparator
对象作为参数:
public void sort(Comparator<Shape> comparator){
}
这假设您的LinkedList类只有Shape
个。如果您有一个通用的LinkedList实现,那么您可以传递Comparator<T>
:
public class MyLinkedList<T> {
//other methods...
public void sort(Comparator<T> comparator){
}
}
答案 1 :(得分:1)
您正在传递Class
对象作为参数。请尝试以下方法:
public void sort(Comparator<T> comparator){
}
其中T
是LinkedList
。