this. Например, следующий код выведет Hello, World!:private Runnable runnable = () -> {
System.out.println(this);
};
@Override
public String toString() {
return "Hello, World!";
}
void main() {
runnable.run();
}А если заменить лямбду на анонимный класс, результат будет вроде
InnerClassThis$1@568bf312:private Runnable runnable = new Runnable() {
@Override public void run() {
System.out.println(this);
}
};
@Override
public String toString() {
return "Hello, World!";
}
void main(String[] args) {
runnable.run();
}То есть у лямбды нет собственного
this — она использует this из внешнего контекста. Это чётко описано в спецификации Java:Значение this в теле лямбды — то же самое, что и this во внешнем контексте.
Если хочешь разобраться глубже, смотри официальный гайд
👉 Java Portal
