我正在嘗試以下代碼並使用JDK 1.8.0_66編譯它。我的代碼似乎在語法上是正確的,我錯過了什麼?Java 8 Lambda表達式不起作用
interface Executable {
void execute();
}
class Runner {
public void run(Executable e) {
System.out.println("Executing code block!");
e.execute();
}
}
public class HelloWorld {
public static void main(String[] args) {
Runner runner = new Runner();
runner.run(new Executable() {
public void execute() {
System.out.println("IN ANONYMOUS CLASS EXECUTE");
}
});
}
runner.run(() -> System.out.println());
}
引發以下編譯錯誤:
App.java:25: error: <identifier> expected
runner.run(() -> System.out.println());
^
App.java:25: error: illegal start of type
runner.run(() -> System.out.println());
^
App.java:25: error: ';' expected
runner.run(() -> System.out.println());
如果您收到編譯錯誤,您的代碼幾乎按照定義,在語法上不正確。 –
謝謝我感到愚蠢!沒有真正注意到我的lambda表達式超出了主代碼塊 – alcaideredb