0

未使用のメソッドをインターフェースから削除しました。javacとEclipseが、実装クラスがまだそれをオーバーライドすると主張しているという事実について不平を言うことを期待していました。

@Override    
public void thisMethodNoLongerOverridesAnything() {}

ただし、エラーや警告は表示されません。

この場合に文句を言うようにjavacまたはEclipseを構成する方法はありますか?

4

4 に答える 4

5

@OverrideのAPIドキュメントによると

メソッドにこのアノテーションタイプのアノテーションが付けられている場合 、次の条件の少なくとも1つが当てはまらない限り、コンパイラはエラーメッセージを生成する必要があります。

  • このメソッドは、スーパータイプで宣言されたメソッドをオーバーライドまたは実装します。
  • このメソッドには、Objectで宣言されたパブリックメソッドのシグネチャと同等のオーバーライドのシグネチャがあります。

したがって、あなたのmothodがまだ何かをオーバーライドしているか、javacとeclipseの両方にバグを見つけました。これは疑わしいです。

于 2012-04-05T11:15:51.537 に答える
0

エラーは間違いなく発生します。

インターフェイスA{voidfunA(); }

class Test implements A{
@Override
public void funA(){

}
@Override
public void B(){

}
}

エラー:タイプTestのメソッドB()は、スーパータイプメソッドをオーバーライドまたは実装する必要があります

Sugessions: create B() in supertype A 
            remove Override annotation
于 2012-04-05T11:15:53.240 に答える
0

Eclipseの場合:

Properties > Java Compiler > Errors/Warnings

@Override注釈はデ​​フォルトで下にありAnnotations、無視されます。

編集:質問を読み直してください。あなたがそれを逃しているときではなく、あなたが不必要なものを持っているならば、あなたは警告されたいです@Override

于 2012-04-05T11:15:59.657 に答える
0

JDK 1.5を使用している場合、@Overrideアノテーションは無視されます。

これを見てください(->日食設定のJDKコンプライアンスが1.5に設定されている可能性もあります)。

于 2012-04-05T12:29:51.137 に答える