gpt4 book ai didi

java - 如何将实现特定接口(interface)的任何类作为参数传递并使用其方法?

转载 作者:行者123 更新时间:2023-12-01 18:58:35 27 4
gpt4 key购买 nike

我创建了自己的“LinkedList”类,它可以接受用泛型指定的对象。

在该类中,我想要一个 sort(ComparatorObject) 方法,该方法接受其类实现 Comparator 的对象。

原因是,对于我的测试对象,特别是形状,我想看看是否可以根据用户选择的各种字段对它们进行排序,例如形状的面积、周长、类型等。

现在,我的比较器类之一定义如下:

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);

但我不能使用“比较”,而且我真的不知道应该如何实现这一点。

最佳答案

您应该发送 Comparator对象作为排序方法中的参数:

public void sort(Comparator<Shape> comparator){

}

这是假设您的 LinkedList 类只有 Shape s。如果您有一个通用的 LinkedList 实现,那么您可以传递 Comparator<T> :

public class MyLinkedList<T> {
//other methods...

public void sort(Comparator<T> comparator){

}
}

关于java - 如何将实现特定接口(interface)的任何类作为参数传递并使用其方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13111908/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com