...
Also see the related rule MET06-J. Do not invoke overridable methods in clone().
Noncompliant Code Example
This noncompliant code example invokes an overridable method from the readObject()
method.
Code Block | ||
---|---|---|
| ||
private void readObject(final ObjectInputStream stream) throws IOException, ClassNotFoundException { overridableMethod(); stream.defaultReadObject(); } public void overridableMethod() { // ... } |
Compliant Solution
This compliant solution removes the call to the overridable method. When removing such calls is infeasible, ensure that the method is declared private or final.
Code Block | ||
---|---|---|
| ||
private void readObject(final ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); } |
Exceptions
Wiki Markup |
---|
*SER09-EX0:* The {{readObject()}} method may invoke the overridable method {{java.io.ObjectInputStream.defaultReadObject()}} \[[SCG 2009|AA. Bibliography#SCG 09]\]. |
Risk Assessment
Invoking overridable methods from the readObject()
method can lead to initialization errors.
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
SER09-J | low | probable | medium | P4 | L3 |
Related Guidelines
Secure Coding Guidelines for the Java Programming Language, Version 3.0 | Guideline 4-4 Prevent constructors from calling methods that can be overridden |
Bibliography
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="1d66165a31c14caf-e8327d4d-4c8a4450-bde3b3d9-bcbc76f339410a1875b6f26f"><ac:plain-text-body><![CDATA[ | [[API 2006 | AA. Bibliography#API 06]] |
| ]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="996e21b050cfa98a-52949089-48cd48b5-beffa069-92d17dfc36227d46dc4f845f"><ac:plain-text-body><![CDATA[ | [[Bloch 2008 | AA. Bibliography#Bloch 08]] | Item 17: "Design and document for inheritance or else prohibit it" | ]]></ac:plain-text-body></ac:structured-macro> |
...