Код ниже дает мне ошибку времени компиляции:
Thread t2 = new Thread(() -> {
try {
sleep(1000);
}
catch (InterruptedException e) {}
});
Метод sleep (int) не определен для типа A (где A - мое имя класса).
Принимая во внимание, что когда я использую анонимный внутренний класс, ошибка времени компиляции отсутствует:
Thread t1 = new Thread(){
public void run(){
try {
sleep(1000);
} catch (InterruptedException e) {}
}
};
Приведенный ниже код также отлично работает:
Thread t3 = new Thread(() -> System.out.println("In lambda"));
Как все работает внутри тела выражения лямбда? Пожалуйста помоги.
Из многих ответов я вижу, что ошибка может быть решена с использованием Thread.sleep(1000)
в моем первом подходе. Тем не менее, я бы очень признателен, если бы кто-нибудь мог объяснить мне, как область и контекст работают в выражении лямбда.