为什么我们不能直接在 Lambda 函数中调用 Thread#sleep()?
下面的代码给了我一个编译时错误:
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"));
在 lambda 表达式正文中,事情是如何运作的?请帮忙。
从许多答案中,我可以看到可以使用我的第一种方法来解决错误。但是,如果有人能向我解释范围和上下文在 lambda 表达式中的工作原理,我将不胜感激。Thread.sleep(1000)