1

簡単な質問です。私は Eclipse を使用していますが、Eclipse が Java 1.7 の準拠を使用していることを除いて、The method must override or implement a superclass method エラーが発生しています。
ここに私のコードがあります:

public abstract class M4 implements Armory {

@Override
public Integer weaponAmmo(int wepAmmo) {
    wepAmmo = 10;
    return wepAmmo;
}

@Override
public Integer weaponDamage(int wepDamage) {
    wepDamage = 2;
    return wepDamage;
}

@Override
public String weaponName(String wepName) {
    wepName = "M4";
    return wepName;
}

そして、ここにインターフェースコードがあります:

public interface Armory {
        public Integer weaponAmmo(int wepAmmo);
        public Integer weaponDamage(int wepDamage);
        public String weaponName(String wepName);

    }

何か案は?

4

4 に答える 4

4

@overrideメソッドをオーバーライドしていないため、メソッドの実装で注釈を使用する必要はありません。インターフェイスメソッドを実装しているだけです。このアノテーションは、スーパー クラス メソッドをオーバーライドするときに必要です。

注釈を削除する@Overrideと、問題ないはずです。

于 2012-12-23T05:49:24.167 に答える
1

あなたは何もオーバーライドしていません。あなたはそれらを実装しています。だから私は @Override を削除できると思います。

編集:EclipseでコンパイラがJava 1.5に設定されていると思います

Eclipse がインターフェイス メソッドの @Override について不平を言うのはなぜですか?

インターフェイス実装での @override は、Java 1.6 以降で許可されています。

于 2012-12-23T05:47:53.983 に答える
1

Java 5 では@Override、スーパー クラス メソッドをオーバーライドするメソッドに対してのみ許可されていました。Java 6@Overrideは、インターフェイス メソッドを実装するメソッドにも許可されているためです。

于 2012-12-23T05:54:05.240 に答える
0

Eclipse が Java 1.5 よりも高い準拠レベルに設定されている場合でも、このエラーは、プロジェクトのプロパティが原因で発生する可能性があります。プロジェクト > プロパティ > Java コンパイラを右クリックします。ここも1.6以上に変更。プロジェクト > クリーンを実行します。

于 2016-12-25T06:32:13.953 に答える