因此,我尝试使用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());
    }
}

09-17 11:47