报告在其中检查 this 表达式的 instanceofgetClass() == 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();
  }
}