valhalla-dev Digest, Vol 7, Issue 66

Remi Forax forax at univ-mlv.fr
Tue Jan 20 11:25:55 UTC 2015


On 01/20/2015 11:11 AM, Peter Levart wrote:
> On 01/20/2015 12:33 AM, Brian Goetz wrote:
>>> Multi-dimensional matching is not well-served by any loose or ambiguous
>>> matching, which is why I had specified a system not needing such.
>>
>> Except that's exactly how method overload selection works in Java 
>> today [1]; by contrast, there are no left-to-right precedence 
>> mechanisms.  So while you might consider the left-to-right rule 
>> "better", when taken in the context of how the language already works 
>> (and how developers think), I think this has to be rejected.
>>
>>
>>
>> [1] The lack of a meet rule actually causes problems here as well, 
>> such as overloads like foo(Object, String) vs foo(String, Object) 
>> (which do you call with foo("", "")?)
>
> Could the meet rule be added to overloads in Java? I mean only in the 
> form of a compile-time warning of course. It seems it could be useful 
> for API designers.

You can not do that because by design you don't know all the subtypes of 
a supertype in Java,
so by example, what is the meet rule for
   class Foo {
     void bar(Runnable r) { ... }
     void bar(Serializable s) { ... }
   }

As an API designer, the best rule about overloads is to avoid them :)

>
> Peter
>

Rémi



More information about the valhalla-dev mailing list