Исключение нулевого указателя со статической картой - PullRequest
1 голос
/ 23 сентября 2011

Сейчас 5 утра, и я немного сплю, так что это может быть (также я относительно новичок в Java).Но я не понимаю, почему этот код генерирует Null Exception с этим кодом.К тому времени карта должна быть инициализирована, не так ли?

private static final Map<String, Integer> CONDS_MAP = 
    Collections.unmodifiableMap
    (
        new HashMap<String, Integer>()
            {{ 
                put("null", 0);
                put("false", 0);
                put("true", 1);
                put("numElems.lt", 2);
                put("NELT", 2);
                put("numElems.gt", 3);
                put("NEGT", 3);
            }}
    );

private int getCodeInt(Object code)
{
    if (code.getClass() == String.class)
    {
        return CONDS_MAP.get((String)code); // Null Exception here
    }
    else
    // (... etc etc)
}

Спасибо!и извините, это слишком тривиально ...

Ответы [ 2 ]

6 голосов
/ 23 сентября 2011

Скорее всего, это происходит из-за попытки распаковать ноль, возвращенный из несуществующего ключа.

return CONDS_MAP.get((String)code);

совпадает с

return CONDS_MAP.get(code).intValue();

Это последнее intValue будетпотерпеть неудачу, если Карта возвращает ноль.

0 голосов
/ 23 сентября 2011

Да, он был инициализирован к тому времени, возможно, исключение nullpointerexception вызвано нулевым ключом.

...