ExplicitInitialization
Since Checkstyle 3.2
Description
Checks if any class or object member is explicitly initialized to
default for its type value (
null
for
object references, zero for numeric types and char
and false
for
boolean
.
Rationale: Each instance variable gets initialized twice, to the
same value. Java initializes each instance variable to its default value
(0
or null
) before performing any initialization specified in
the code. So there is a minor inefficiency.
Properties
name | description | type | default value | since |
---|---|---|---|---|
onlyObjectReferences | Control whether only explicit initializations made to null for objects should be checked. | boolean | false |
7.8 |
Examples
To configure the check:
<module name="Checker">
<module name="TreeWalker">
<module name="ExplicitInitialization"/>
</module>
</module>
Example:
public class Example1 {
private int intField1 = 0; // violation
private int intField2 = 1;
private int intField3;
private char charField1 = '\0'; // violation
private char charField2 = 'b';
private char charField3;
private boolean boolField1 = false; // violation
private boolean boolField2 = true;
private boolean boolField3;
private Object objField1 = null; // violation
private Object objField2 = new Object();
private Object objField3;
private int arrField1[] = null; // violation
private int arrField2[] = new int[10];
private int arrField3[];
}
To configure the check so that it only checks for objects that explicitly initialize to null:
<module name="Checker">
<module name="TreeWalker">
<module name="ExplicitInitialization">
<property name="onlyObjectReferences" value="true"/>
</module>
</module>
</module>
Example:
public class Example2 {
private int intField1 = 0; // ignored
private int intField2 = 1;
private int intField3;
private char charField1 = '\0'; // ignored
private char charField2 = 'b';
private char charField3;
private boolean boolField1 = false; // ignored
private boolean boolField2 = true;
private boolean boolField3;
private Object objField1 = null; // violation
private Object objField2 = new Object();
private Object objField3;
private int arrField1[] = null; // violation
private int arrField2[] = new int[10];
private int arrField3[];
}
Example of Usage
Violation Messages
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
Package
com.puppycrawl.tools.checkstyle.checks.coding