# Friday, June 20, 2008

@Override in eclipse

When one implements an interface, the template in Eclipse puts an @Override and it does not complain about it. Ant javac task also compiles without warnings.

Sometimes other Eclipse instances start to complain exactly for that @Override stating that there's no method that's overridden. Well, Eclipse, please do make up your mind.

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.html
"Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message."

Well, that's not very clear. As far as I remember an Interface is a pure abstract class, right? So, which one's correct.

P.S. Sometime ago I was having a similar problem with Eclipse and generics - Eclipse only gave a warning about something (can't remember what exactly), but the javac said that it was an error - Google said something like "eclipse uses jikes, you use javac". So what, aren't there specs?!


Update: apparently JDK5 (or 1.5, suit yourself) does not allow that. So in order to get all the wrong @Overrides - set the Compliance level to 5.0 (Eclipse -> Window -> Preferences -> Java -> Compiler -> Compiler compliance level ) - and..... correct them. I have 29 left.

Sunday, June 22, 2008 6:51:41 PM UTC
<blockquote>Well, Eclipse, please do make up your mind.</blockquote>
In order for the Eclipse to make up their mind, it's crucial to report the problems you encounter in their bug tracking system.

For me implementing a method is different than overriding one - so I don't write @Override when implementing a method from interface.
Monday, June 23, 2008 8:36:01 AM UTC
But Eclipse doesn't see the difference, and eclipse does put @Override by default.

I'll check the possibilities for reporting :)
Wednesday, July 30, 2008 12:49:14 PM UTC
Good, it works.
i've stted level to 1.6 and now work
ettore
Saturday, October 11, 2008 7:40:36 PM UTC
Thank you. you save my time!
samitha
Sunday, March 08, 2009 4:55:31 PM UTC
When importing new source files, my Eclipse used to complain about those @Override things, if any. Setting compiler's compliance to 1.6 really solved the problem.
Ilja Astahovs
Sunday, March 08, 2009 4:57:13 PM UTC
worth mentioning, I switched from 1.5 compliance to 1.6
Ilja Astahovs
Friday, December 04, 2009 1:23:16 AM UTC
The purpose of @Override is to guard against your changing the name of the overridden method in the super class, without realizing that the overriding method's name needs to be changed as well. From this point of view, it makes sense to use it when overriding a method from an interface; you want to make sure that you are going to be told, when renaming interface methods, about the methods implementing them that need to follow suit.

So Eclipse is right to add @Override to methods overriding interface methods.
Rodrigo
Friday, December 04, 2009 1:33:57 AM UTC
I am using compliance 1.6 on Eclipse Galileo (3.5.1) and it still complains about @Overrides on interface methods. Bummer.
Rodrigo
Friday, December 04, 2009 7:39:37 PM UTC

The purpose of @Override is to guard against your changing the name of the overridden method in the super class, without realizing that the overriding method's name needs to be changed as well. From this point of view, it makes sense to use it when overriding a method from an interface; you want to make sure that you are going to be told, when renaming interface methods, about the methods implementing them that need to follow suit.

So Eclipse is right to add @Override to methods overriding interface methods.


I don't argue about that, but Rodrigo check this out:


"Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message."


Source: http://java.sun.com/javase/6/docs/api/java/lang/Override.html

So in my opinion two things should happen for @Override to be more usable - change its name to something else ('cause implementing an interface with @Override is a little stupid) and change the JavaDoc.
OpenID
Please login with either your OpenID above, or your details below.
Name
E-mail
(will show your gravatar icon)
Home page

Comment (Some html is allowed: a@href@title, blockquote@cite, strike) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

Enter the code shown (prevents robots):

Live Comment Preview