JEP 269: Convenience Factory Methods for Collections

Stuart Marks stuart.marks at oracle.com
Wed Oct 7 00:13:30 UTC 2015



On 10/3/15 7:16 AM, forax at univ-mlv.fr wrote:
> "Kevin Bourrillion" <kevinb at google.com> wrote:
>> We have ~1800 occurrences of Optional-valued Maps or Caches in Google. They
>> do this for an actual reason: a negative result is meaningfully different
>> from no result. This is addressed in our Optional javadoc .
>
> mapped-to-absent means that you know the keys you are waiting for, so you can store them in an external set (list, etc) and enjoy implementations like EnumMap or the couple JSObject/HiddenClass you found in most javascript engines.
> Using Optional for that seem inefficient.

Indeed, the Optional docs that Kevin linked to themselves have links to other 
pages that describe techniques for avoiding use of nulls and Optionals in cases 
such as this. Nonetheless, as Kevin points out, there are 1,800 such usages in 
Google's code base.

And personally, as a matter of style, I dislike using Optional in collections.

My question is, is this enough of a problem that we should allow nulls in these 
collections? I would prefer not to do this, but if there is evidence that this 
would be a mistake, I'd like to hear it.

And if disallowing nulls will cause developers to create things like 
Map<K,Optional<V>>, are we ok with that, and are developers ok with that?

s'marks



More information about the core-libs-dev mailing list