views:

5439

answers:

4

In Eclipse 3.4.1 using JDK1.6.0_10 how can I activate a warning on a missing @Override annotation on a method that implements an interface method?

In the Preferences window this option:

Java > Compiler > Errors / Warnings > Annotations > Missing '@Override' annotation

works fine for missing annotations on methods that override a superclass method, but it does nothing for interface methods.

A: 

Maybe I'm missing something but interface methods are already required to be implemented by implementation classes.

The compiler will generate an error if the interface is not completely implemented.

fhe
Yes, but you still want this. See http://stackoverflow.com/questions/212614/should-a-method-that-implements-an-interface-method-be-annotated-with-override
Bno
Ah yes, thanks for the pointer. Must have missed that since I'm still at Java 1.5 on Mac OSX :-)
fhe
+2  A: 

Belay what I said in the other thread. Apparently it's not a compiler option, but a Java compatibility version issue: if your compatibility version is 5, you won't be able to annotate interface implementation methods. If your compatibility version is 6, then you will be able to.

However I don't think there's a way of actually forcing Eclipse to generate an error if you do not annotate each implemented method. From this page:

Missing '@Override' annotation: When enabled, the compiler will issue an error or a warning whenever it encounters a method overriding another implemented method, and the '@Override' annotation is missing.

Phill Sacre
I use java 6 (edited the question to make this clear. Should have done that before.)
Bno
+6  A: 

It is not possible in Eclipse 3.4.1. It is a known issue. See this bug report page for more information.

Bno
A: 

The compatibility setting to 1.6 instead of 1.5 worked for me on: Eclipse Java EE IDE for Web Developers.

Build id: 20100218-1602

Elmo R.