インターフェースではなく、具象クラスが使用されていることを報告します。 このような宣言は抽象化の失敗を引き起こし、テストをより困難にする可能性があります。

クラスがシステムまたはサードパーティのライブラリに由来している宣言は、このインスペクションでは報告されません。 キャスト、instanceof、およびローカル変数は、equals() メソッドの実装では報告されません。 また、キャストは clone() メソッドの実装では報告されません。

例:


  interface Entity {}
  class EntityImpl implements Entity {}

  void processObject(Object obj) {
    // 警告: 具象クラスの instanceof
    if (obj instanceof EntityImpl) {
      // 警告: インターフェースではなく、
      // 具象クラスにキャスト
      processEntity((EntityImpl)obj);
    }
  }
  // 警告: 具象のパラメーター
  void processEntity(EntityImpl obj) {
  }

抽象クラスへのキャストを無視するには、「抽象クラス型を無視する」オプションを使用します。

問題の報告対象となるコンテキストを制御するには、次のオプションを使用します。