报告其中检查了 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();
  }
}