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();
}
}