Files
openide/java/java-impl/resources/inspectionDescriptions/InstanceofChain.html
Leonid Shalupov 40795fe787 IJI-2422: community/java: move resources under resources root
GitOrigin-RevId: 8b2b63fc6db476ca0c2cfe5cadd84db6c4236d0f
2025-02-05 04:43:28 +00:00

35 lines
1.1 KiB
HTML

<html>
<body>
Reports any chains of <code>if</code>-<code>else</code> statements all of whose conditions are <code>instanceof</code> expressions
or class equality expressions (e.g. comparison with <code>String.class</code>).
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.
<p>Example:</p>
<pre><code>
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();
}
</code></pre>
<!-- tooltip end -->
<p>
Use the checkbox below to ignore <code>instanceof</code> expressions on library classes.
<p>
</body>
</html>