Useless null check in HashMap.merge()

Scott Palmer swpalmer at gmail.com
Wed Jul 4 12:55:55 UTC 2018


On Jul 4, 2018, at 5:42 AM, Zheka Kozlov <orionllmain at gmail.com> wrote:
> 
> I noticed dead code in java.util.HashMap.merge():
> 
> public V merge(K key, V value,
>                   BiFunction<? super V, ? super V, ? extends V>
> remappingFunction) {
>    if (value == null)
>        throw new NullPointerException();
> 
>    ...
> 
>    if (value != null) { *// Condition ' value != null' is always true*
>        if (t != null)
>            t.putTreeVal(this, tab, hash, key, value);
>        else {
>            tab[i] = newNode(hash, key, value, first);
>            if (binCount >= TREEIFY_THRESHOLD - 1)
>                treeifyBin(tab, hash);
>        }
>        ++modCount;
>        ++size;
>        afterNodeInsertion(true);
>    }
>    return value;
> }
> 
> The code in the if branch will never be executed because `value` was
> previously checked at the beginning of the method.
> 
> Is this a mistake?

You mean it will ALWAYS be executed.  Yes, it looks to me like the ‘if’ is useless.




More information about the core-libs-dev mailing list