この注釈が原因で、非互換性の問題が発生し続けています。とにかくそれを持っている意味は何ですか?
単純にメソッドをオーバーライドすることと、メソッドをオーバーライドして @override でアノテーションを付けることの違いは何ですか?
この注釈が原因で、非互換性の問題が発生し続けています。とにかくそれを持っている意味は何ですか?
単純にメソッドをオーバーライドすることと、メソッドをオーバーライドして @override でアノテーションを付けることの違いは何ですか?
@Override
JavaDocから引用するには:
メソッドにこのアノテーションタイプのアノテーションが付けられているが、スーパークラスメソッドをオーバーライドしない場合、コンパイラはエラーメッセージを生成する必要があります。
したがって、良い答えは「コンパイル時に発生する可能性のある実行時エラーを防ぐため」です:-)
乾杯、
ポイントは、メソッドを実際にオーバーライドしていない場合にエラーを発生させることです。
たとえば、
public class SuperClass {
public void doSomething(int a) {
}
}
拡張中にエラーが発生する可能性があります
public class SubClass {
public void doSomething(String a) {
}
}
スーパークラス メソッドを再実装したと思いますが、新しいメソッドを追加しただけです。
メソッド宣言の前に追加@Override
するとエラーが表示されるので、何か問題があることがわかります。
メソッドが親のメソッドをオーバーライドする必要があることを明確にします。
問題が発生した場合は、親クラスに互換性のない変更を多数加えているか(IDEにこれを行わせずに)、インターフェイスを実装している場合にこのアノテーションを許可しないJava5.0でコードをコンパイルしていることを示しています。