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