[英]Java 8 Lambda Expressions not working
我正在嘗試以下代碼,並使用JDK 1.8.0_66進行編譯。 我的代碼在語法上似乎正確,我錯過了什么嗎?
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());
您的語句在定義了runnner
變量的塊之外。 應該是這樣的:
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());
}
該行代碼必須位於代碼塊內。 因此,您需要將其移至main
方法的主體中:
更改
} // end of main
runner.run(() -> System.out.println());
至
runner.run(() -> System.out.println());
} // end of main
Runner.run(()-> System.out.println()); -是主要方法之外。 將代碼放入main方法中,它將可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.