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 に答える