Effective Javaを読むチャレンジ-項目36-

項目36 常にOverrideアノテーションを使用する

Overrideアノテーションというのは、Javaライブラリーに追加されたアノテーションです。名前を見て分かると思いますが、このアノテーションはスーパークラスのメソッドをオーバーライドしていることをコンパイラに宣言するためのアノテーションです。

なぜこういうアノテーションが必要かというと、本書のサンプルにもあるとおり、メソッドのオーバーライドとオーバーロードを間違えることが多いからです。EclipseなどのIDEを使っていれば、コードインスペクション(ソースコードの静的検証)をしてくれるので、意図しないオーバーライドの失敗を簡単に見つけることができると思います。

ただし、例えばEclipseの場合はデフォルトでOverrideアノテーションの欠落があっても警告を出さない設定になっていることがあるので、IDEを導入している場合は設定を確認した方がいいと思います。本書でも「適切なコードインスペクションを有効にすれば」と注意喚起してくれています。

まあサンプルも簡単だしあまり難しい表現もあまりないですし、この項目はパッと読み終えることができるでしょう。この項目の結論は「スーパークラスの宣言をオーバーライドしているすべてのメソッド宣言に対してOverrideアノテーションを付けるべき」、これだけです。

また、この項目の後半で書かれているとおり、リリース1.6からインタフェースの拡張(インタフェースで拡張する場合も、抽象クラスで拡張する場合も同様)において、スーパーインタフェースからオーバーライドしているメソッドに対してもOverrideアノテーションを付けられるようになりました。

しかしながら、そもそもインタフェースをインタフェースで拡張する場合にスーパーインタフェースのメソッドは記述しなくてもいいし、抽象クラスで拡張する場合もその抽象クラス内でインタフェースのメソッドを実装する必要がなければメソッドを記述する必要はありません。早い話、メソッドをオーバーライドしてることをサブインタフェースや抽象クラス上で注意させたい場合には、わざわざメソッドの記述を書いてOverrideアノテーションを使えばいいよ、ということだと思います。

ということで、今回は以上です。

広告
  • LINEで送る