<p>Should a method that implements an interface method be annotated with <code>@Override</code>?</p>

<p>The <a href="http://java.sun.com/javase/6/docs/api/java/lang/Override.html" rel="noreferrer">javadoc of the <code>Override</code> annotation</a> says: </p>

<blockquote>
  <p>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.</p>
</blockquote>

<p>I don't think that an interface is technically a superclass. Or is it?</p>

<p><kbd><a href="https://stackoverflow.com/revisions/212614/5">Question Elaboration</a></kbd></p>

You should use @Override whenever possible.  It prevents simple mistakes from being made.  Example:
```
```
class C {
    @Override
    public boolean equals(SomeClass obj){
        // code ...
    }
}
```
```
This doesn't compile because it doesn't properly override
```
public boolean equals(Object obj)
```
.
The same will go for methods that implement an interface (
1.6 and above only
) or override a Super class's method.