
resources.report.rules.pmd.ConstructorCallsOverridableMethod.html Maven / Gradle / Ivy
ConstructorCallsOverridableMethod
ConstructorCallsOverridableMethod
Calling overridable methods during construction poses a risk of invoking methods on an
incompletely constructed object and can be difficult to discern.
It may leave the sub-class unable to construct its superclass or forced to
replicate the construction process completely within itself, losing the ability to call
super(). If the default constructor contains a call to an overridable method,
the subclass may be completely uninstantiable. Note that this includes method calls
throughout the control flow graph - i.e., if a constructor Foo() calls a private method
bar() that calls a public method buz(), this denotes a problem.
This rule is defined by the following Java class:
net.sourceforge.pmd.rules.ConstructorCallsOverridableMethod
Example:
public class SeniorClass {
public SeniorClass(){
toString(); //may throw NullPointerException if overridden
}
public String toString(){
return "IAmSeniorClass";
}
}
public class JuniorClass extends SeniorClass {
private String name;
public JuniorClass(){
super(); //Automatic call leads to NullPointerException
name = "JuniorClass";
}
public String toString(){
return name.toUpperCase();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy