可能性のある複製:
Javaの@Overrideアノテーションを使用するのはいつですか?
スーパークラスにそのメソッドがあることをコンパイラにチェックさせる以外に、メソッドに@Override
アノテーションを付ける理由はありますか?
説明したように、@ Overrideはメソッドがオーバーライドされていることを示すコンパイル時チェックを作成します。これは、オーバーライドしようとしたときに愚かな署名の問題がないことを確認するのに非常に便利です。
たとえば、次のエラーが表示されました。
public class Foo {
private String id;
public boolean equals(Foo f) { return id.equals(f.id);}
}
このクラスは書かれたとおりにコンパイルされますが、@ Overrideタグをequalsメソッドに追加すると、Objectのequalsメソッドがオーバーライドされないため、コンパイルエラーが発生します。これは単純なエラーですが、ベテランの開発者の目からも逃れることができます
コンパイラーをチェックするだけでなく、便利にするのに十分でしょう。また、開発者の意図を文書化します。
たとえば、メソッドをオーバーライドしても、型自体のどこからでも使用しない場合、後でコードにアクセスする人は、一体なぜそこにあるのかと疑問に思うかもしれません。注釈はその目的を説明しています。
いいえ、あなたはほとんどそれを釘付けしました。
@Override
はコンパイラーにintentを伝えます:メソッド@Override
にタグを付けた場合、スーパークラス(またはJavaのインターフェース)から何かをオーバーライドするつもりでした)。優れたIDEは、@Override
なしでメソッドをオーバーライドするすべてのメソッドに役立つフラグを立てるので、この2つの組み合わせにより、目的の操作を確実に実行できます。
nope-読みやすさも向上することを除いて(つまり、IDEが使用するインジケータに加えて、メソッドがスーパークラスの宣言をオーバーライドするのを簡単に見つけられます)