...
Code Block | ||
---|---|---|
| ||
public class MutableHolder { private Hashtable<IntegerHashtable<Integer, String>String> value; // not final public Object getValue() { return value; } public void setValue(Hashtable<IntegerHashtable<Integer, String>String> ht) { value = (Hashtable<IntegerHashtable<Integer, String>String>)ht; } } |
This example also violates OBJ37-J. Defensively copy private mutable class members before returning their references.
...
Code Block | ||
---|---|---|
| ||
public class ImmutableHolder { private final Hashtable<IntegerHashtable<Integer, String>String> value; // create defensive copy of inputs public ImmutableHolder(Hashtable<IntegerHashtable<Integer, String>String> ht) { value = (Hashtable<IntegerHashtable<Integer, String>String>)ht.clone(); } // create defensive copy while returning public Object getValue() { return value.clone(); } } |
...
Wiki Markup |
---|
\[[API 06|AA. Java References#API 06]\] Class {{System}} \[[Commes 07|AA. Java References#Commes 07]\] Garbage Collection Concepts and Programming Tips \[[Goetz 04|AA. Java References#Goetz 04]\] \[[Lo 05|AA. Java References#Lo 05]\] \[[Bloch 08|AA. Java References#Bloch 08]\] Item 6: ""Eliminate obsolete object references"" \[[MITRE 09|AA. Java References#MITRE 09]\] [CWE ID 405|http://cwe.mitre.org/data/definitions/405.html] ""Asymmetric Resource Consumption (Amplification)"" |
...
OBJ04-J. Encapsulate the absence of an object by using a Null Object 08. Object Orientation (OBJ) OBJ30-J. Do not ignore return values of methods that operate on immutable objects