Это не обязательно так.Вы не показали это объявление класса для Inner.Если Inner имеет поле с именем externalInt, то оно будет изменено.Иначе Outer'sInt будет.Если вы запустите:
public class Outer {
int outerInt = 0;
public void hello() {
Inner inner = new Inner() {
@Override
public void execute() {
outerInt = 5;
}
};
// later
inner.execute();
System.out.println(outerInt);
}
public static void main(String[] args) {
Outer o = new Outer();
o.hello();
}
}
class Inner {
int outerInt;
public void execute() {
}
}
Вы получите 0, а не 5.
Но, комментируя externalInt во Inner, вы получите 5