1. ホーム

[解決済み】インターフェイスのメソッド実装は@Overrideすべきなのか?

2022-03-24 12:41:19

質問

インターフェイスメソッドを実装するメソッドには、以下のアノテーションを付けるべきでしょうか? @Override ?

のjavadocを参照してください。 Override アノテーション は言う。

メソッド宣言が、スーパークラスのメソッド宣言をオーバーライドすることを意図していることを示します。メソッドがこのアノテーションタイプでアノテーションされているが、スーパークラスのメソッドをオーバーライドしていない場合、コンパイラはエラーメッセージを生成する必要があります。

インターフェイスは技術的にスーパークラスではないと思うのですが。それとも、そうなのでしょうか?

質問の詳細

どのように解決するのですか?

可能な限り@Overrideを使用すべきです。 単純なミスを防ぐことができます。 例を挙げます。

class C {
    @Override
    public boolean equals(SomeClass obj){
        // code ...
    }
}

を適切にオーバーライドしていないため、コンパイルできません。 public boolean equals(Object obj) .

インターフェースを実装するメソッドも同様です ( 1.6以降のみ ) またはスーパークラスのメソッドをオーバーライドします。