Use of concrete class
Reports usages of concrete classes, rather than interfaces. Such declarations may represent a failure of abstraction and may make testing more difficult.
Declarations whose classes come from system or third-party libraries will not be reported by this inspection. Casts, instanceofs, and local variables are not reported in equals()
method implementations. Also, casts are not reported in clone()
method implementations.
Example:
interface Entity {}
class EntityImpl implements Entity {}
void processObject(Object obj) {
// warning: instanceof of the concrete class
if (obj instanceof EntityImpl) {
// warning: cast to the concrete class,
// rather than the interface
processEntity((EntityImpl)obj);
}
}
// warning: parameter of concrete class
void processEntity(EntityImpl obj) {
}
- 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.
UseOfConcreteClass
Use the Ignore abstract class type option to ignore casts to abstract classes.
Use the subsequent options to control contexts where the problem is reported.
Here you can find the description of settings available for the Use of concrete class 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!