我使用JDK1.6在Eclipse Helios中创建了一个项目/类文件。我让eclipse为接口的实现类生成代码。
public interface Foo {
void bar();
}
public class FooImpl implements Foo {
@Override
public void bar() {
}
}
到目前为止一切顺利。现在出于某种原因,我已经在具有JDK 1.5
的Eclipse中导入了该项目,并且我看到了错误消息The method bar() of type FooImpl must override a superclass method
,并快速修复了删除'@Override'注释。
在谷歌搜索之后,我知道有类似OVERRIDE_SNAUF的东西 - 其中6.0 Java编译器被更新以允许在接口方法实现上使用@Override。
答案 0 :(得分:1)
@Override适用于在编译阶段检查覆盖语法,所以它也适用于界面,我猜是这样。
答案 1 :(得分:1)
无法找到问题,但是 - 是的,你是对的,不允许@Override
注释在Java 5中注释覆盖接口方法。因此,如果你想要,你必须删除这些注释用Java 5编译代码。
答案 2 :(得分:0)
即使您有jdk 1.6,也可以将编译器选项设置为合规级别1.5。这样,eclipse生成的代码将与java 1.5兼容(它不会在实现接口的方法上添加@Override注释)。我认为你实际上可以将它设置为永远不会放置@Override注释。
嗯,实际上它比这复杂得多。为了完全兼容,您应该同时安装JDK 1.6和JDK 1.5,并将每个JDK 1.6设置为其合规性级别的默认JDK。这是确保代码完全向后兼容的最佳方法。
在首选项窗口(一般或特定项目)中,转到Java->编译器并在那里设置合规性级别。同样在Java->安装的JRE中添加JDK 1.5,然后在Java-> Installed JREs-> Execution Environments中单击J2SE-1.5并检查新安装的JDK 1.5。这确保了如果您的项目或工作空间设置为使用该合规级别,eclipse将使用编译器行为以及JDK 1.5附带的标准库。