Suggestion for a more sensible implementation of EMPTY_MAP

Stuart Marks stuart.marks at oracle.com
Thu Jun 27 21:38:18 UTC 2019



On 6/19/19 12:51 AM, Abraham Marín Pérez wrote:
> private void decorate(Map<String, String> data) {
>      //...
>      data.computeIfPresent("field", (k, v) -> highlightDifferences(v, otherValue));
>      //...
> }
> 
> At one point an emptyMap() was passed to this method, causing an UOE. [...]

On the face of it, the decorate() method has the possibility to modify the map 
that it's passed. Thus, it shouldn't be at all surprising that passing an 
unmodifiable map to it results in UOE.

As a special case, it doesn't *actually* modify the map if "field" is absent, 
but you have to do some analysis to figure this out.

Now you want the JDK to add another special case to Collections.emptyMap(), and 
possibly others, in order to make this special case work. I don't think we want 
to do that.

s'marks


More information about the core-libs-dev mailing list