TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #1361 3.05K
В Java тело лямбды прозрачно для 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
  • 👍 14
  • 🔥 1
More from @java_iibrary
  1. Oct 3, 2026💡 Предпочитайте делегирование наследованию: отношение «является» тесно связывает ваш клас…
  2. Oct 2, 2026🚀 Spring Boot 4: переименовано свойство преобразования исключений ✅ Было: spring.dao.exce…
  3. Oct 2, 2026Процесс ≠ Поток ≠ Виртуальный поток. Эти понятия часто путают, хотя они решают разные зада…
  4. Oct 1, 2026Когда Java-стектрейс оказался длиннее контекста ИИ 👀 👉 Java Portal
  5. Oct 1, 2026Spring Boot 4: приближение срока истечения SSL-сертификатов больше не меняет статус health…
  6. Sep 30, 2026Почему один и тот же Java-файл .class запускается на Windows, Linux и macOS без перекомпил…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →