Recursive lambda on field declarations in local classes and anonymous	classes.
    bitter_fox 
    bitterfoxc at gmail.com
       
    Tue Feb 21 14:44:24 PST 2012
    
    
  
Hi,
To use recursive lambda expressions, we have to use that statement:
    SAM sam = () -> sam.invoke();
However, the newest compiler rejects it on field declarations in local
classes and anonymous classes.
Cannot we use recursive lambda expressions in these situations?
public class Main
{
    interface SAM
    {
        void invoke();
    }
    SAM sam = () -> sam.invoke(); // Legal
    class Inner
    {
        SAM sam = () -> sam.invoke(); // Legal
    }
    Object obj = new Object()
    {
        SAM sam = () -> sam.invoke(); // Illegal
    };
    public static void main(String[] args)
    {
        class Local
        {
            SAM sam = () -> sam.invoke(); // Illegal
        }
        new Object()
        {
            SAM sam = () -> sam.invoke(); // Illegal
        };
    }
    public void method()
    {
        class Local
        {
            SAM sam = () -> sam.invoke(); // Illegal
        }
        new Object()
        {
            SAM sam = () -> sam.invoke(); // Illegal
        };
    }
}
Regards,
bitter_fox
    
    
More information about the lambda-dev
mailing list