Lambda and intersection types
Brian Goetz
brian.goetz at oracle.com
Mon Nov 12 12:06:11 PST 2012
Yes. i2 should be an instance of both I1 and I2.
On 11/12/2012 3:01 PM, Boaz Nahum wrote:
> Yes, but should it be valid code ?
>
> If yes, I2 implements both I1 & I2 or just I2 ?
>
> Thanks
> Boaz
>
>
>
> On Mon, Nov 12, 2012 at 9:55 PM, Brian Goetz <brian.goetz at oracle.com
> <mailto:brian.goetz at oracle.com>> wrote:
>
> The back-end work for intersection-typed lambdas is not implemented
> yet...only the compiler front-end work.
>
>
> On 11/12/2012 2:45 PM, Boaz Nahum wrote:
>
> The follwing simple code ...
>
> ==============================__======
> interface I1 {void f();}
>
> interface I2 {
>
> void printMe()default { System.out.println("I2");}
>
> void f();
> }
>
> public static void main(String[] args) {
>
> I2 i2 = (I1 & I2) () -> {};
>
> System.out.println( "i2 is I2=" + (i2 instanceof I2));
>
> i2.printMe();
> }
> ==============================__===
> Output is:
>
> ------------------------------__-------
> i2 is I2=false
> Exception in thread "main"
> java.lang.__IncompatibleClassChangeError: Class
> question.lambda_intersection___types.Q$$Lambda$2 does not
> implement the
> requested interface question.lambda_intersection___types.I2
> ------------------------------__-------
>
> What is the correct behavior ?
>
>
More information about the lambda-dev
mailing list