Objects.nonNull()
Brian Goetz
brian.goetz at oracle.com
Fri Jan 14 05:23:01 UTC 2011
Thinking some more:
- The name nonNull() is just confusing. It could reasonably mean one
of several things, and we've seen this in people's reactions: some don't
like it for the throwing behavior because its not clear that it has a
strong checking behavior, others don't like it for the defaulting
behavior because the find the defaulting behavior unnatural. This
suggests it is just too vague to make anyone happy.
- I'm still enamored of checkNonNull() for the throwing version but am
still open to better names.
- If we add carpet-sweeping versions later, asNonNull() or
makeNonNull() both seem better than nonNull().
- We just stay away from the not-specific-enough name nonNull() here.
On 1/13/2011 7:20 PM, mark.reinhold at oracle.com wrote:
>> Date: Thu, 13 Jan 2011 18:15:30 -0500
>> From: brian.goetz at oracle.com
>
>> ...
>>
>> Between checkNonNull() and throwIfNull(), I lean towards the former. In any
>> case the answer should be driven by what is more obvious to the reader.
>
> Agreed.
>
>> So
>> let's look at some typical code:
>>
>> public Moo fooWrapper(String x, String y) {
>> return foo(throwIfNull(x), throwIfNull(y));
>> }
>>
>> vs
>>
>> public Moo fooWrapper(String x, String y) {
>> return foo(checkNonNull(x), checkNonNull(y));
>> }
>>
>> Since throwing should be the exceptional path, it feels to me that having throw
>> in the name sets slightly the wrong expectations. ...
>
> Agreed.
>
> I'm still troubled by the "check" prefix, though. It implies that the
> named condition will be tested but it doesn't clearly relate the result
> of that test to the method's exception-throwing behavior.
>
> Here's an idea: Why not treat this as a (degenerate) kind of conversion
> operation? Call it asNonNull(x) -- it (trivially) converts its argument
> to a non-null value, and if it can't then it throws an NPE.
>
> public Moo fooWrapper(String x, String y) {
> return foo(asNonNull(x), asNonNull(y));
> }
>
> Of all the names we've considered, this looks the most natural to me.
>
> - Mark
More information about the core-libs-dev
mailing list