Overrideアノテーション
Java1.5で追加されたアノテーションです。メソッド宣言だけに使えて、親クラスのメソッドをオーバーライドしていることを表現します。Overrideアノテーションをつけなくてもオーバーライドは可能です。では、なぜOverrideアノテーションをつけるべきなのか?というのが本記事になります。
Overrideアノテーションをつけた方が良い理由
以下のような親クラスがあるとします。
public class Parent {
private String something;
protected void setSomething(String something) {
this.something = something;
}
}
このクラスを継承しsetSomethingメソッドをオーバーライドする必要があったため以下のコードを書きました。
public class Child extends Parent {
protected void setSomething(Integer something) {
System.out.println(something);
}
}
引数の型を間違えていますが、正常にコンパイルが通るためそのミスに気付くことができません。このまま気付かずにリリースを迎える、ということはさすがにないと思いますが、思わぬバグとして必ずテストでハマる可能性があります。そして、Overrideアノテーションをつける理由はココにあります。Overrideアノテーションをつけておけば、以下のようにIDEが検知してくれるためそのミスに気付くことができ、事前に問題解決に繋がります(もちろんjavacコマンドでのコンパイルもコンパイラが検知してくれます)
また、IDEを使っていれば、設定次第でOverrideアノテーションがついていなくても親クラスのメソッドをオーバーライドしているメソッドがあれば警告を出すことが可能です。つまり、常にOverrideアノテーションを使えば、意図しないオーバーライドを検知することが可能となります。
Overrideアノテーションをつけるべき理由まとめ
- オーバーライドしたつもりができていなかった、といったうっかりミスを事前に防ぐことができ予期せぬバグの防止になります。
- オーバーライドするつもりじゃなかったけどよく見たらオーバーライドしていた、ということに気付き予期せぬバグの防止になります。
以上です。