2

重複の可能性:
Java の @Override アノテーションをいつ使用し、その理由は?

この注釈が原因で、非互換性の問題が発生し続けています。とにかくそれを持っている意味は何ですか?

単純にメソッドをオーバーライドすることと、メソッドをオーバーライドして @override でアノテーションを付けることの違いは何ですか?

4

3 に答える 3

4

@OverrideJavaDocから引用するには:

メソッドにこのアノテーションタイプのアノテーションが付けられているが、スーパークラスメソッドをオーバーライドしない場合、コンパイラはエラーメッセージを生成する必要があります。

したがって、良い答えは「コンパイル時に発生する可能性のある実行時エラーを防ぐため」です:-)

乾杯、

于 2012-10-08T09:56:18.843 に答える
2

ポイントは、メソッドを実際にオーバーライドしていない場合にエラーを発生させることです。

たとえば、

public class SuperClass {
  public void doSomething(int a) {
  }
}

拡張中にエラーが発生する可能性があります

public class SubClass {
  public void doSomething(String a) {
  }
}

スーパークラス メソッドを再実装したと思いますが、新しいメソッドを追加しただけです。

メソッド宣言の前に追加@Overrideするとエラーが表示されるので、何か問題があることがわかります。

于 2012-10-08T09:57:02.887 に答える
1

メソッドが親のメソッドをオーバーライドする必要があることを明確にします。

問題が発生した場合は、親クラスに互換性のない変更を多数加えているか(IDEにこれを行わせずに)、インターフェイスを実装している場合にこのアノテーションを許可しないJava5.0でコードをコンパイルしていることを示しています。

于 2012-10-08T09:56:39.203 に答える