所以我试图使用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());
}
}
在我遇到比较两个双打的问题之前,我在这里看到了问题的解决方案,返回语句和Double。 getArea()返回LineSegment的双精度区域。所以我遇到了这个错误,任何帮助都将不胜感激,谢谢 - LineSegment is not abstract and does not override abstract method compareTo(java.lang.Object) in java.lang.Comparable
class LineSegment extends Shape implements Comparable
答案 0 :(得分:1)
要实施Comparable
,您需要实施compareTo
方法。
如果您想使用Comparator,则应实施compare
。
查看更多here
使用:
class LineSegment extends Shape implements Comparable<LineSegment>{
...
@Override
public int compareTo(LineSegment other) {
return Double.compare(this.getArea(), other.getArea());
}
}
答案 1 :(得分:1)
您需要使用Comparator接口而不是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());
}
}
答案 2 :(得分:0)
使用Comparable,您必须将一个对象与此对象进行比较:
public int compareTo(Object object1){
LineSegment ls1 = (LineSegment) object1;
LineSegment ls2 = this;
return Double.compare(ls1.getArea(), ls2.getArea());
}
这只是重写,但你应该使用<LineSegment>
:
class LineSegment extends Shape implements Comparable<LineSegment>{
public int compareTo(LineSegment ls){
return Double.compare(ls.getArea(),this.getArea());
}
}