web-dev-qa-db-ja.com

Javaをコーディングするときに本当に@Overrideなどが必要ですか?

重複の可能性:
Javaの@Overrideアノテーションを使用するのはいつですか、なぜですか?

オーバーライドしたいコードの前に@Overrideを追加する機能は何ですか。私はそれを使っても使わなくても、すべてが順調に進んでいるように見えました(少なくとも私にとっては)。

42
zfm

必須ではありませんが、強くお勧めします。それはあなたが足で自分を撃つことを防ぎます。これにより、別の関数をオーバーライドすると思われる関数を記述しても、スペルが間違っていて完全に予期しない動作が発生するのを防ぐことができます。

47
James Kingsbery

@Overrideを追加する機能

指定したメソッドがスーパークラスメソッドをオーバーライドする(または、Java 6以降)でインターフェイスメソッドを実装する)と思われる場合、(注釈を付けることで)コンパイラーがダブルチェックします。メソッドは実際にはスーパークラスメソッドをオーバーライドしない(またはインターフェイスメソッドを実装する)場合、コンパイラはこれにエラーのフラグを付けます。これは、メソッド名にタイプミスがあるか、メソッドシグネチャに誤りがあることを示しています。

@Overrideが本当に必要か

それが必要ですか?絶対にそうではありませんが、そのようなcheapへの道

  • これはオーバーライドメソッドであることを人間の読者に明示的に伝え、
  • コンパイル時にバグをキャッチします実行時にキャッチするのに少なくとも数回の脳サイクルが必要になる可能性がありますそれ

... IDEがそれを含めるのに役立つと、さらに安価になります...

31
Bert F

一貫性の管理に役立つため、この方法をお勧めします。誰かがスーパークラスメソッドの名前を変更すると想像してみてください(それだけで、それに応じてクラスで名前の変更を実行することはありません。これは非常に仮説です:))コンパイルエラーが原因で最初に知る人になります。

4
Arturs Licis

唯一の違いは、@ Overrideを使用してメソッドに注釈を付け、何もオーバーライドしない場合、コンパイラーは不平を言うということです。

チェック いつjavasオーバーライドアノテーションを使用しますか、そしてその理由は何ですか?

3
jhurtado

メソッド名のスペルミスや大文字と小文字の違いを回避するのに役立ちました。それがなければ、追跡するのに時間がかかる可能性があるこれらの迷惑なバグの1つです。

機能的な違いはありませんが、メソッドをオーバーライドしているとコンパイラに通知するので、どこかで問題が発生したときにあまり役に立たないと不平を言う可能性があります。

1
Michael Berry

Urコードの素朴さを増し、他の人がurコードを維持するのにも役立つので、それを使用することを強くお勧めします。

1
palAlaa