I was looking into Java EnumMap implementation and found that if I pass null value to EnumMap, EnumMap assign a Object class object in place of just null Value.
Code from EnumMap Class:
public V put(K key, V value) {
typeCheck(key);
int index = key.ordinal();
Object oldValue = vals[index];
vals[index] = maskNull(value);
if (oldValue == null)
size++;
return unmaskNull(oldValue);
}
private Object maskNull(Object value) {
return (value == null ? NULL : value);
}
private static final Object NULL = new Object() {
public int hashCode() {
return 0;
}
public String toString() {
return "java.util.EnumMap.NULL";
}
};
My question is why java place a object in place of direct assigning a null value to given key. What kind of benefit java gets doing so.