Java @JDK1.6中的重写注释

Java @JDK1.6中的重写注释,java,eclipse,annotations,jdk1.6,Java,Eclipse,Annotations,Jdk1.6,我正在使用JDK1.6。当我实现一个接口时,在实现类中,如果我在函数名之前给出@override,Eclipse会抛出一个编译错误。i、 根据Eclipse,以下代码是错误的 public class SomeListener implements ServletContextListener { @Override public void contextDestroyed(ServletContextEvent arg0) { // code }

我正在使用JDK1.6。当我实现一个接口时,在实现类中,如果我在函数名之前给出
@override
,Eclipse会抛出一个编译错误。i、 根据Eclipse,以下代码是错误的

public class SomeListener implements ServletContextListener {
    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
       // code
    }
    /* other overridden methods here */
}

如果我删除了
@Override
注释,那么代码可以很好地编译。这是否意味着JDK1.6不再要求我们为
@override
注释添加前缀?

您可能需要在eclipse中设置编译器遵从性级别。这可以在窗口->首选项->Java->编译器中找到

如果编译器首选项仍然设置为1.5,编译器将在覆盖注释上呕吐


编辑:如果您已将编译器符合性级别设置为默认值以外的任何值,还可以根据每个项目检查编译器符合性级别。

JDK1.6肯定支持它。我不知道你为什么会有问题


你看到了什么错误?我唯一能想到的就是确保在项目设置中使用正确的JDK。也许您是针对旧的JDK进行编译?

否@Override注释仍在使用。您应该检查
contextdestromed
方法是否真的存在于
ServletContextListener
接口中,并检查该接口的导入包。

@Override自java 1.6以来对方法实现起作用


资源:

关于同一主题:


听起来您的编译器是为Java 5设置的,当时接口上不允许使用
@Override

Java编译器设置可以根据您选择的配置设置在多个位置, 一种方法是在Window->Preferences->Java->Compiler中,将其最小值更改为1.6(如果设置为早期版本)。 另一种方法是右键单击Project->Properties->Java编译器->JDK Compliance->选择JDK1.6 minimum,然后单击apply

在进行更改之后,让项目生成,它生成并使更改生效


如果上述选项都不起作用-尝试将rt.jar添加到类路径,它将解决问题。

Java 1.6版本中的@Override注释已更改。 在Java1.5中,编译器不允许在实现的接口方法上使用@Override注释,从1.6开始就是这样


您必须在properties project->java compiler

中更改java编译器版本,具体来说,eclipse给您的错误是什么?您完全确定您实际上正在重写该方法,而不是重载它?eclipse的错误消息:方法contextDestroyed(ServletContextEvent)OgnlListener类型的必须重写超类方法什么是OgnlListener?你的例子中没有。哎呀。。实际上,OgnlListener是我最初的类名。在将其发布到StackOverflow之前,我对其进行了重命名,但在上面的评论中忘记了这样做。:)这应该是对这个问题的评论。+1:我刚刚被这件事激怒了。显然,我的一位使用Eclipse的同事将其项目设置为1.6,尽管Maven将编译器版本设置为1.5(我使用m2e将其导入为Maven项目…)。在我的例子中,这是因为在pom.xml中,对于Maven构建,插件Maven编译器插件被配置为适用于1.5版本的java源和目标。将其中的值更改为以下固定值:org.apache.maven.plugins maven compiler plugin 2.3.2 1.6 1.6