declaration-site extension methods possibly dangerous

Rémi Forax forax at univ-mlv.fr
Sat Dec 12 04:41:54 PST 2009


Le 12/12/2009 12:25, Fatih Coskun a écrit :
> Rémi Forax wrote:
>> I don't think that it's a good idea to be able to hide an extension 
>> method. [...] the compiler can raise an error, as it do when you try 
>> to override a static method
>> with a non-static one.
>>
>>
>
>
> Extension methods are about adding methods to interfaces without 
> breaking existing code. 

No, just adding method to an interface (see below).

> What happens, if someone has defined an instance method, which is 
> later added as an extension method in the class' super-interface? We 
> can't raise an error, as that would break existing code.

Yes, it will break existing code, like introducing a new public method 
in a class
can break code. In real world, this kind of breakage doesn't appear 
often, I don't think it worst the cost of
not raising an error is you try to override an extension method.

Note that introducing an extension method can break the code in a more 
malicious way
if the extension method overload an abstract method of the interface.

interface Map<K, V> {
   V get(Object o);
   V get(String s) import static Optimizeds.get;
}

Rémi


More information about the lambda-dev mailing list