Comparator/Comparators API change proposal

Henry Jen henry.jen at oracle.com
Mon Jun 3 18:24:10 PDT 2013


On Jun 3, 2013, at 6:13 PM, Henry Jen <henry.jen at oracle.com> wrote:

> On Jun 3, 2013, at 5:07 PM, Michael Hixson <michael.hixson at gmail.com> wrote:
> 
>> Hi Henry,
>> 
>> 1. Does this code throw an NPE?  It's not clear from the docs.
>> 
>> int result = Comparators
>>     .nullsFirst(c1)
>>     .thenComparing(c2)
>>     .compare(null, null);
>> 
> 
> It should return 0; otherwise, it's a bug.
> 

BTW, this is really not a best practice, which is why we change it from Comparator.nullsFirst() to Comparators.nullsFirst(Comparator).

I expect the null-friendly wrapper to be the last-step operation on an existing Comparator. I even  thought about throwing IllegalStateException.

We really don't want to encourage null-friendlyness. By having nulls-friendly wrapper to be last step make the code easier to read and not guessing if a comparator in-between is null-friendly or not.

Cheers,
Henry


More information about the lambda-libs-spec-observers mailing list