22
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

アルス・ウェアーAdvent Calendar 2019

Day 4

メソッドをオーバーライドする時にOverrideアノテーションをつけるべき理由

Posted at

Overrideアノテーション

Java1.5で追加されたアノテーションです。メソッド宣言だけに使えて、親クラスのメソッドをオーバーライドしていることを表現します。Overrideアノテーションをつけなくてもオーバーライドは可能です。では、なぜOverrideアノテーションをつけるべきなのか?というのが本記事になります。

Overrideアノテーションをつけた方が良い理由

以下のような親クラスがあるとします。

Parent.java
public class Parent {

    private String something;

    protected void setSomething(String something) {
        this.something = something;
    }
}

このクラスを継承しsetSomethingメソッドをオーバーライドする必要があったため以下のコードを書きました。

Child.java
public class Child extends Parent {

    protected void setSomething(Integer something) {
        System.out.println(something);
    }
}

引数の型を間違えていますが、正常にコンパイルが通るためそのミスに気付くことができません。このまま気付かずにリリースを迎える、ということはさすがにないと思いますが、思わぬバグとして必ずテストでハマる可能性があります。そして、Overrideアノテーションをつける理由はココにあります。Overrideアノテーションをつけておけば、以下のようにIDEが検知してくれるためそのミスに気付くことができ、事前に問題解決に繋がります(もちろんjavacコマンドでのコンパイルもコンパイラが検知してくれます)
キャプチャ.PNG

また、IDEを使っていれば、設定次第でOverrideアノテーションがついていなくても親クラスのメソッドをオーバーライドしているメソッドがあれば警告を出すことが可能です。つまり、常にOverrideアノテーションを使えば、意図しないオーバーライドを検知することが可能となります。

Overrideアノテーションをつけるべき理由まとめ

  1. オーバーライドしたつもりができていなかった、といったうっかりミスを事前に防ぐことができ予期せぬバグの防止になります。
  2. オーバーライドするつもりじゃなかったけどよく見たらオーバーライドしていた、ということに気付き予期せぬバグの防止になります。

以上です。

参考

22
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?