Compilation of lambda in an interface, do we have a plan ?

Robert Field robert.field at oracle.com
Wed May 22 13:49:26 PDT 2013


On 05/22/13 12:05, Brian Goetz wrote:
>>> Making interface lambda methods static where possible was done in
>>> lambda weeks back.
>>
>> It depends what you mean by 'where possible', i.e. where you draw the 
>> line.
>> As far as I understand, we only need to make the lambdas that do a super
>> non-static,
>> not all lambdas that capture 'this'.
>>
>> I'm not very comfortable to have instance default method in interface
>> when a static method can work
>> (even if it's not very rational, private methods are no more overridable
>> that static ones).
>
> The eventual (for Java SE 8) outcome will be that we do the same thing 
> in classes and interfaces.  But there were some implementation 
> difficulties that have slowed our movement in this direction, and 
> they're being ironed out.
>

We do the same thing in classes and interfaces now (save for the public 
default method work-around).  Same logic.  What Remi is saying is that 
using "this" doesn't NECCESSARILY require one to make it an instance 
method, we could translate the "this" and add a parameter to the 
static.  Same with accessable references to instance methods/fields, 
with a little more complex translation. Note there can be inner classes, 
and ....  In each case the complexity goes up, and we always have to 
make some of them instance methods.  As we try to in general, we took 
the simpler route, in cases where the "best" route can still be 
implemented in the future.

Given that the instance methods (including defaults) WILL be private.  
What is the source of your discomfort?

-Robert



More information about the lambda-spec-observers mailing list