Chain of 'instanceof' checks
Reports any chains of if
-else
statements all of whose conditions are instanceof
expressions or class equality expressions (e.g. comparison with String.class
). Such constructions usually indicate a failure in object-oriented design which dictates that such type-based dispatch should be done via polymorphic method calls rather than explicit chains of type tests.
Example:
double getArea(Shape shape) {
// Warning: abstraction failure.
// It would be better to declare a getArea()
// abstract method in the shape interface
// and implement it in every inheritor.
if (shape instanceof Point) {
return 0;
}
if (shape instanceof Circle) {
return Math.PI *
Math.pow(((Circle) shape).radius(), 2);
}
if (shape instanceof Rectangle) {
return ((Rectangle) shape).width() *
((Rectangle) shape).height();
}
throw new IllegalArgumentException();
}
- By ID
Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.
ChainOfInstanceofChecks
Use the checkbox below to ignore instanceof
expressions on library classes.
Here you can find the description of settings available for the Chain of 'instanceof' checks inspection, and the reference of their default values.
Inspection Details | |
---|---|
By default bundled with: | |
Can be installed with plugin: | Java, 243.23126 |
Thanks for your feedback!