1

我已经使用 JDK1.6 在 Eclipse Helios 中创建了一个项目/类文件。我让 Eclipse 为接口的实现类生成代码。

public interface Foo {
    void bar();
}

public class FooImpl implements Foo {
    @Override
    public void bar() {
    }
}

到目前为止,一切都很好。现在由于某种原因,我已经在 Eclipse 中导入了该项目,JDK 1.5并且我看到了错误消息The method bar() of type FooImpl must override a superclass method,并快速修复了删除 '@Override' 注释

谷歌搜索后,我知道有类似OVERRIDE_SNAUF的东西- 其中 6.0 Java 编译器已更新以允许在接口方法实现上使用 @Override。

4

3 回答 3

1

找不到问题但是 - 是的,你是对的,@Override注释不允许注释 Java 5 中的重写接口方法。因此,如果你想用 Java 5 编译代码,你必须删除这些注释。

于 2010-09-28T07:02:20.720 回答
1

@Override 非常适合在编译阶段检查覆盖语法,所以它也适用于接口,原因与我猜的相同。

于 2010-09-28T05:37:54.317 回答
0

即使您有 jdk 1.6,您也可以将编译器选项设置为合规级别 1.5。这样,eclipse 生成的代码将与 java 1.5 兼容(它不会在实现接口的方法上添加 @Override 注释)。我认为您实际上可以将其设置为根本不放置 @Override 注释。

嗯,实际上它比这更复杂一点。为了完全兼容,您应该同时安装 JDK 1.6 和 JDK 1.5,并将每一个都设置为其合规级别的默认 JDK。这是确保代码完全向后兼容的最佳方式。

在首选项窗口(一般或特定项目)中,转到 Java->Compiler 并在那里设置合规级别。同样在 Java->Installed JREs 添加 JDK 1.5,然后在 Java->Installed JREs->Execution Environments 单击 J2SE-1.5 并检查新安装的 JDK 1.5。如果您的项目或工作区设置为使用该合规级别,这可确保 Eclipse 将使用编译器行为以及 JDK 1.5 附带的标准库。

于 2010-09-28T07:24:15.183 回答