Overload resolution simplification

Remi Forax forax at univ-mlv.fr
Tue Aug 13 14:24:51 PDT 2013


On 08/11/2013 09:25 PM, Brian Goetz wrote:
>>> What makes you think the goal is encouraging explicit lambdas?
>>
>> Overloads are part of the java legacy. Ignoring them and you will see
>> enterprise guidelines saying that only explicit lambdas should be used.
>> Otherwise, it will break when someone will add an overload.
>
> Overloads are part of the legacy, but the number of genuine SAM-SAM 
> conflicts with existing APIs are pretty small -- I think 
> Executor.submit() is the #1 case, and there are only a handful of others.
>
> What we're trying to discourage is new, designed-for-lambdas APIs from 
> getting out of hand with overloads.  Overloading and type inference 
> work against each other, so if you want to design an API for type 
> inference, you need to dial back on the overloading. (Which we've 
> gradually done throughout the course of designing the java.util.stream 
> API, for a host of reasons.)
>
> So:
>  - For new APIs, go easier on the overloading when there are possible 
> SAM conflicts;
>  - For old APIs that have such conflicts, go explicit.
>
> Maurizio's latest patch also includes a lint warning for overloads 
> that are asking for trouble, so hopefully API designers will have a 
> way of catching those early.
>

Here, we re talking about lambdas and I think I mostly agree,
but we have the same issue with method reference but no way to go explicit.

Rémi



More information about the lambda-spec-observers mailing list