@override annotation in JDK 1.6

こ雲淡風輕ζ 提交于 2019-12-09 15:40:01

问题


I'm using JDK1.6. When I implement an interface and in the implementing class, if I give @override before my function names, Eclipse throws an compilation error. i.e. below code is wrong according to Eclipse.

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

If I remove @Override annotation, then the code compiles fine. Does it mean that JDK1.6 does not require us to prefix the @override annotation anymore?


回答1:


You probably need to set the compiler compliance level in eclipse. This can be found in Window->Preferences->Java->Compiler

If the compiler preferences are still set to 1.5 the compiler will barf on the override annotation.

Edit: Also check compiler compliance level on a per project basis if you've set those to anything else than default.




回答2:


@Overidde works on method implementation since java 1.6.


Resources :

  • Sun's forums - Java Programming - Should @Override apply to implementation of interface/abstract methods?
  • dertompson.com - @Override specification changes in Java 6
  • The Former Weblog of Peter Ahé - @Override snafu

On the same topic :

  • When do you use Java's @Override annotation and why?



回答3:


The Java Compiler settings can be at multiple places based on the configuration You choose, One way is to Window->Preferences->Java->Compiler, change that to 1.6 minimum, if it was set to some earlier version. Another way is Right Click on Project-> Properties ->Java Compiler ->JDK Compliance ->Select JDK1.6 minimum, click apply.

After you make the changes, let the project build, it builds and take the changes into affect.

If none of the above options work - Try adding the rt.jar to classpath, it will fix the problem.




回答4:


The @Override annotation changed in Java 1.6 version. In Java 1.5, the compiler didn't allow @Override annotation on implemented interface methods, from 1.6 it does.

You must change java compiler version in properties project -> Java Compiler




回答5:


JDK1.6 definitely supports it. I'm not sure why you would have issues.

What error are you seeing? The only thing I can think of is to make sure that you are using the correct JDK in your project settings. Maybe you are compiling against an older JDK?




回答6:


No the @Override annotation is still used. You should check that the contextDestroyed method is really present in the ServletContextListener interface, and check the imported package for this interface.




回答7:


It sounds like your compiler is set for Java 5, when @Override on interfaces wasn't allowed.



来源:https://stackoverflow.com/questions/3619036/override-annotation-in-jdk-1-6

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!