First draft of translation document

Rémi Forax forax at
Tue May 18 01:11:57 PDT 2010

Le 18/05/2010 09:01, Gernot Neppert a écrit :
> Interesting to see the various possibilities of converting lambda
> expressions into callable Java objects!
> I wonder why the approach from paragraph 6.2 (Translation as inner
> class) is not also viable for paragrah 5 (stateless functions).
> Paragrah 5 relies on the assumption:
> "Additionally, we assume that the MethodHandle class will be extended
> to provide a method asSam(Class sam) which will provide an optimized
> form of injecting a SAM interface into a method handle."
> At the end of the day, doesn't that mean that an anonymous proxy class
> will be created anyway?

No, not necessarily. That's why asSam() is cool.

The idea behind is to optimize the class that have only
one abstract method to store that method
in a special place and to have a specific path
in the VM to deal with these new kind of objects.

In that case method handles and SAM objects
can share the same representation in the VM
(or a similar one) thus the VM will be able
to create a new inner class from a method handle
without creating a new class.

> In what respect will your approach be superiour to simply generating
> code for a static inner class, such as:
> private static Block<T>  $sam$1= new Block<T>() {
>     public void invoke(String s){
>         System.out.println(s);
>     }
> };


More information about the lambda-dev mailing list