@Override
使用できる場合は、常にメソッドに注釈を付ける必要があります。
これは、JDK 5ではスーパークラスのメソッドをオーバーライドすることを意味し、JDK 6および7では、スーパークラスのメソッドをオーバーライドし、インターフェースのメソッドを実装することを意味します。前述のように、その理由は、メソッドをオーバーライド(または実装)していると思われるが、実際には新しいメソッド(異なるシグネチャ)を定義しているとコンパイラがエラーをキャッチできるようにするためです。
equals(Object)
対のequals(YourObject)
例は点で標準的なケースであるが、同じ引数は、インターフェイスの実装のために行うことができます。
インターフェイスの実装メソッドに注釈を付けることが必須ではない理由は、JDK 5がこれをコンパイルエラーとしてフラグを付けたためだと思います。JDK 6がこのアノテーションを必須にした場合、下位互換性が失われます。
私はEclipseユーザーではありませんが、他のIDE(IntelliJ)では、 @Override
、プロジェクトがJDK 6+プロジェクトとして設定されている場合、インターフェースメソッドの実装時にのみアノテーションが追加されます。私はEclipseが似ていると想像します。
ただし、この使用法には別の注釈、おそらく注釈を表示することをお勧めし@Implements
ます。