Attempt to invoke virtual method

2018-06-01  本文已影响0人  sexyhair

日志信息:

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference

引起此异常代码

HashMap<String ,Integer> map = new HashMap<String,Integer>();
int value = map.get("key")

就会报此异常。
查看HashMap#get()方法

public class HashMap<K,V>
    extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable
{

    public V get(Object key) {
        if (key == null)
            return getForNullKey();
        Entry<K,V> entry = getEntry(key);

        return null == entry ? null : entry.getValue();
    }

    private V getForNullKey() {
        if (size == 0) {
            return null;
        }
        for (HashMapEntry<K,V> e = table[0]; e != null; e = e.next) {
            if (e.key == null)
                return e.value;
        }
        return null;
    }
}

看HashMap#getForNullKey()中第一行,当size == 0 时会return null ,返回到int value = map.get("key")
即int value = null;就抛出了此异常;

衍生:

上一篇下一篇

猜你喜欢

热点阅读