Java 8 lambda范围问题

Jos*_* MN 2 java closures java-8

    int x = 1;
    Consumer<Object> f = (i) -> {
        int x = 1; // invalid
    };
Run Code Online (Sandbox Code Playgroud)

    Consumer<Object> f = (i) -> {
        int x = 1;
    };
    int x = 1; // valid
Run Code Online (Sandbox Code Playgroud)

想象一下方法中的那两个块.为什么第二个块有效?

And*_*hev 5

这与普通的Java范围非常相似:

int i;
{
    int i;      // invalid
}          
Run Code Online (Sandbox Code Playgroud)

{
    int i;      // valid
}

int i;    
Run Code Online (Sandbox Code Playgroud)