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