Lambda and intersection types

Brian Goetz brian.goetz at oracle.com
Mon Nov 12 11:55:43 PST 2012


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