mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +07:00
35 lines
1.1 KiB
HTML
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> |