super メソッドを呼び出さずに super メソッドをオーバーライドしているメソッドを報告します。 このような状況は Refused Bequest (相続拒否) という呼び名でも知られています。 このようなメソッドは抽象化に問題があることを示唆しており、追跡困難なバグを生み出す原因になる場合があります。

このインスペクションは clone() を除く java.lang.Object からオーバーライドされたメソッドを報告しません。 clone() メソッドは規則に従ってその super メソッドを呼び出し、正しい型のオブジェクトを返す必要があります。

例 1:


  class A {
    @Override
    public Object clone() {
      // 'super.clone()' を呼び出していません
      return new A();
    }
  }

例 2:


  interface I {
    default void foo() {}
  }

  class A implements I {
    // 「'default' スーパーメソッドを無視する」が無効な場合は
    // メソッドに対して警告が表示されます
    @Override
    public void foo(){}
  }

インスペクションの構成: