2

Java EnumMap の実装を調べていたところ、EnumMap に null 値を渡すと、EnumMap は null 値の代わりに Object クラス オブジェクトを割り当てることがわかりました。

EnumMap クラスのコード:

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";
            }
   };

私の質問は、指定されたキーにnull値を直接割り当てる代わりにJavaがオブジェクトを配置する理由です。そうすることで、Java はどのような利益を得ますか。

4

1 に答える 1