Java:抽象メソッドを実装するときに@Overrideアノテーションを追加する必要がありますか?
-
05-07-2019 - |
質問
Javaで非仮想メソッドをオーバーライドする場合、@ Overrideアノテーションの使用が推奨されますが、抽象メソッドを実装するとどうなりますか? @Overrideも使用する必要がありますか?
解決
この場合は @Override
を使用する傾向があるため、スーパークラスが変更された場合(メソッドを完全に削除するか、署名を変更するなど)、サブクラスでメソッドにフラグが付けられます。 )。
唯一の本当の違いは、アノテーションがない場合、スーパークラス/インターフェースのメソッドが変更または削除された場合、問題の実装は単に「通常」になります。そのクラスのメソッド。したがって、契約を履行するためだけにメソッドを実装する場合は、注釈を追加する必要があります。実装されているインターフェイスや継承された抽象メソッドに関係なく、メソッドがクラスで意味をなす場合は、おそらく追加すべきではありません。
他のヒント
はい-繰り返しますが、コンパイラに伝えます"ここでメソッドをオーバーライドしたいです。オーバーライドする対応するメソッドが ない場合は、間違えたため、そのことを伝えたいと思います!"
個人的には、これは言語の一部ではなく単なる注釈であるのは残念だと思います(C#のように)が、それはもちろん後知恵の恩恵です。
はい。効果的なJavaのJoshua Blochによる推奨プラクティスです。
実際には、 Effective Java(2nd Ed。)の178ページの最後の段落で、Joshua Blochは、アノテーション。ただし、「そうすることは有害ではありません」
戦略を選択し、それを一貫して続けることをお勧めします。
所属していません StackOverflow