我的班级头:

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)必须覆盖超类方法

为什么?
我试着只是做可比

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


但这也失败了。

最佳答案

您的项目很可能已设置为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() {
   }
}


所以尝试一下:


http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-with-j2se50.htm

09-26 11:40