因此,我尝试使用Comparable比较两个形状的面积。我在我的类中实现了它,现在我试图在LineSegment类中重写比较,该类扩展了我自己的抽象类Shape。
class LineSegment extends Shape implements Comparable{
public int compareTo(Object object1, Object object2)
{
LineSegment ls1 = (LineSegment) object1;
LineSegment ls2 = this;
return Double.compare(ls1.getArea(), ls2.getArea());
}
}
在比较两个双精度数之前出现问题之前,我在这里看到了使用return语句和Double来解决问题的方法。 getArea()返回LineSegment的两倍区域。所以我遇到了这个错误,我们将不胜感激,谢谢-
LineSegment is not abstract and does not override abstract method compareTo(java.lang.Object) in java.lang.Comparableclass LineSegment extends Shape implements Comparable
最佳答案
您需要使用比较器界面而不是可比较器。因此您的课程定义将更改为:
class LineSegment extends Shape implements Comparator <LineSegment> {
....//with compare(LineSegment ls1, LineSegment ls2) and you dont need typecasting
或者,如果您打算进行比较,则需要类似以下的实现:
class LineSegment extends Shape implements Comparable<LineSegment>{
public int getArea() {...}
public int compareTo(LineSegment object1)
{
return Double.compare(this.getArea(), object1.getArea());
}
}