public class ExplicitInitializationCheck extends AbstractCheck
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.
onlyObjectReferences
- control whether only explicit
initializations made to null for objects should be checked.
Default value is false
.
To configure the check:
<module name="ExplicitInitialization"/>
To configure the check so that it only checks for objects that explicitly initialize to null:
<module name="ExplicitInitialization"> <property name="onlyObjectReferences" value="true"/> </module>
Example:
public class Test { private int a = 0; private int b = 1; private int c = 2; private boolean a = true; private boolean b = false; private boolean c = true; private boolean d = false; private boolean e = false; private A a = new A(); private A b = null; // violation private C c = null; // violation private D d = new D(); int ar1[] = null; // violation int ar2[] = new int[]; int ar3[]; private Bar<String> bar = null; // violation private Bar<String>[] barArray = null; // violation public static void main( String [] args ) { } }
AutomaticBean.OutputStreamOptions
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
MSG_KEY
A key is pointing to the warning message text in "messages.properties"
file.
|
Constructor and Description |
---|
ExplicitInitializationCheck() |
Modifier and Type | Method and Description |
---|---|
int[] |
getAcceptableTokens()
The configurable token set.
|
int[] |
getDefaultTokens()
Returns the default token a check is interested in.
|
int[] |
getRequiredTokens()
The tokens that this check must be registered for.
|
void |
setOnlyObjectReferences(boolean onlyObjectReferences)
Setter to control whether only explicit initializations made to null
for objects should be checked.
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
beginTree, clearMessages, destroy, finishTree, getFileContents, getLine, getLines, getMessages, getTabWidth, getTokenNames, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokens
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
configure, contextualize, getConfiguration, setupChild
public static final java.lang.String MSG_KEY
public ExplicitInitializationCheck()
public final int[] getDefaultTokens()
AbstractCheck
getDefaultTokens
in class AbstractCheck
TokenTypes
public final int[] getRequiredTokens()
AbstractCheck
getRequiredTokens
in class AbstractCheck
TokenTypes
public final int[] getAcceptableTokens()
AbstractCheck
getAcceptableTokens
in class AbstractCheck
TokenTypes
public void setOnlyObjectReferences(boolean onlyObjectReferences)
onlyObjectReferences
- whether only explicit initialization made to null
should be checkedpublic void visitToken(DetailAST ast)
AbstractCheck
visitToken
in class AbstractCheck
ast
- the token to processCopyright © 2001-2019. All Rights Reserved.