此代碼不能用javac JDK8編譯器編譯。編譯JavaFX WorkerStateEvent上的lambda時出錯
public class Test extends Application {
public static void main(String[] args) {
launch(Test.class);
}
@Override
public void start(Stage primaryStage) throws Exception {
Service service = new Service() {
@Override
protected Task createTask() {
return null;
}
};
service.setOnFailed(event -> System.out.println(event.getSource().getException().toString()));
}
}
的錯誤是
java: cannot find symbol
symbol: method getException()
location: class java.lang.Object
的IntelliJ告訴我呢,一切都OK,如果我手動添加投上event.getSource()
,彙編作品的IntelliJ卻告訴我,中投是多餘的。
是否有Intellij錯誤?我使用最新版本的Intellij Ultimate(14.1.1)。
謝謝,但問題是更多關於lambda如何與泛型一起工作以及爲什麼intellij沒有檢測到這個編譯階段之前的錯誤。我能夠單獨糾正這一點。 – mfalaize 2015-04-05 18:45:06
是的,只是提供一個替代方案。儘管你的原始代碼編譯,所以這是一個IntelliJ錯誤。 – 2015-04-05 18:47:31
什麼?你說我發佈的代碼片段編譯?我雖然在自動完成的錯誤... – mfalaize 2015-04-05 18:54:41