1

快速提问。我正在使用 Eclipse,我得到了 The method must override or implement a superclass method 错误,除了 Eclipse 使用的是 Java 1.7 的合规性。
这是我的代码:

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?

从 java 1.6 开始允许在接口实现上使用 @override。

于 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 回答