1

我的班级标题:

public class GraphEdge implements Comparable<GraphEdge>{

/** Node from which this edge starts*/
protected Point from;
/** Node to which this edge goes*/
protected Point to;
/** Label or cost for this edge*/
protected int cost;

我的 compareTo 方法:

@Override
public int compareTo(GraphEdge other){
    return this.cost-other.cost;
}

但 Eclipse 给了我错误:

GraphEdge 类型的方法 compareTo(GraphEdge) 必须覆盖超类方法

为什么?我试着做 Comparable,与

@Override
public int compareTo(Object o){
            GraphEdge other = (GraphEdge) o;
    return this.cost-other.cost;
}

但这也失败了。

4

1 回答 1

7

您的项目很可能设置为 Java 1.5 合规级别 - 尝试将其设置为 1.6,它应该可以工作。这里没有 Eclipse 来测试,但是我记得当设置为 1.5 时,我不能在接口上使用 @Override(但可以在类上)方法覆盖。这在设置为 1.6 时工作正常。

即这在设置为 1.5 时应该会失败,但在 1.6 时可以正常工作:

interface A {
   void a();
}

class B implements A {
   @Override
   public void a() {
   }
}

所以试试吧:

在此处输入图像描述

于 2012-03-02T02:50:11.303 回答