开发者

@override annotation in JDK 1.6

开发者 https://www.devze.com 2023-01-14 04:58 出处:网络
I\'m using JDK1.6. When I implement an interface and in the implementing class, if I give @override before my function names, Ecli开发者_如何学Cpse throws an compilation error. i.e. below code is wron

I'm using JDK1.6. When I implement an interface and in the implementing class, if I give @override before my function names, Ecli开发者_如何学Cpse 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?


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.


@Override 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?


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.


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.

@override annotation in JDK 1.6

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


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?


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.


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

0

精彩评论

暂无评论...
验证码 换一张
取 消