Nulls

Remi Forax forax at univ-mlv.fr
Sun Sep 23 06:34:37 PDT 2012


On 09/23/2012 03:12 PM, Doug Lea wrote:
> On 09/23/12 08:38, Tim Peierls wrote:
>> On Sun, Sep 23, 2012 at 8:07 AM, Doug Lea <dl at cs.oswego.edu
>> <mailto:dl at cs.oswego.edu>> wrote:
>>
>>     The main downside is that findAny is forced to lie (reporting 
>> absent) if a
>>     null item matches predicate.
>>
>>
>> Doesn't bother me.
>
> It encounters the same antipattern seen when you
> need to establish that a Map key has no mapping:
>  if (map.get(k) == null)     // don't know if there is a mapping
>     if (!map.containsKey(k)) // so recheck
> Which might not seem so terrible in particular cases where
> you are prepared to cope with mappings to null. But the
> issues make it impossible to write some generic
> Map utilities because the need to recheck forces non-atomicity.

yes, for Map, we need a getEntry() but introducing it now as a default 
method will have the same problem that the default implementation is not 
atomic.

>
> For findAny etc, the issue is even harder:
>   if (!...findAny(...).isPresent())
>     // somehow recheck?
> And the need for recheck is even less obvious.
>
>
> -Doug
>

Rémi



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