Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java 8 lambda scoping issue

    int x = 1;
    Consumer<Object> f = (i) -> {
        int x = 1; // invalid
    };

vs.

    Consumer<Object> f = (i) -> {
        int x = 1;
    };
    int x = 1; // valid

Imagine those two blocks inside a method. Why is the second block valid?

like image 297
Joshua MN Avatar asked Feb 06 '26 21:02

Joshua MN


1 Answers

This is very similar to normal Java scopes:

int i;
{
    int i;      // invalid
}          

vs.

{
    int i;      // valid
}

int i;    
like image 51
Andrey Chaschev Avatar answered Feb 09 '26 12:02

Andrey Chaschev