JEP 269: Convenience Factory Methods for Collections (original) (raw)

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>, are we ok with that, and are developers ok with that?

s'marks



More information about the core-libs-dev mailing list