this 式がチェックされている instanceof または getClass() == SomeClass.class の使用箇所を報告します。

このような式はオブジェクト指向設計に不備があることを示しており、ポリモーフィックな構文に置換する必要があります。

例:


class Super {
  void process() {
    if (this instanceof Sub) { // 警告
      doSomething();
    } else {
      doSomethingElse();
    }
  }
}
  
class Sub extends Super {}

この問題を解決するには、オーバーライドするメソッドを使用します。


class Super {
  void process() {
    doSomethingElse();
  }
}
  
class Sub extends Super {
  @Override
  void process() {
    doSomething();
  }
}