Windows XP SP3 32 비트를 실행하는 가상 컴퓨터가 있습니다. 이 컴퓨터에서 here에서 Java SE JDK 8 빌드 b44 개발자 미리보기를 설치했습니다.람다식이 Java 8에서 작동하지 않습니까?
JavaFX 2.1 SDK도 설치했습니다.
그것은 잘 작동 :
java -version
> java version "1.8.0-ea"
> Java(TM) SE Runtime Environment (build 1.8.0-ea-b44)
> Java HotSpot(TM) Client VM (build 24.0-b14, mixed mode, sharing)
내가 (here에서 가져온) 다음과 같은 프로그램을 실행하려고 : 컴파일
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.ButtonBase;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleButtonBuilder;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class LambdasWithJavaFx extends Application
{
public static void main(String[] args)
{
Application.launch(args);
}
@Override public void start(Stage stage) throws Exception
{
BorderPane root = new BorderPane();
ToggleButton button = new ToggleButton("Click");
final StringProperty btnText = button.textProperty();
button.setOnAction(new EventHandler<ActionEvent>()
{
@Override public void handle(ActionEvent actionEvent)
{
ToggleButton source = (ToggleButton) actionEvent.getSource();
if (source.isSelected())
{
btnText.set("Clicked!");
}
else
{
btnText.set("Click!");
}
}
});
root.setCenter(button);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.setWidth(200);
stage.setHeight(200);
stage.show();
}
}
프로그램을 예상대로 달렸다.
는 그 문서의 지침을 따라이있는 버튼 이벤트 처리 코드 교체 :> lambda expressions are not supported in -source 1.8
> (use -source 8 or higher to enable lambda expressions)
: 컴파일 할 때
button.setOnAction((ActionEvent event)->
{
ToggleButton source = (ToggleButton) event.getSource();
if (source.isSelected())
{
btnText.set("Clicked!");
}
else
{
btnText.set("Click!");
}
});
, 나는 (라인 button.setOnAction((ActionEvent event)->
에) 다음과 같은 오류를
-source 8
인수를 추가했지만 아무 것도 변경되지 않았습니다.
Java 8의 람다 식 기능을 확인하고 싶었던 이유는 무엇입니까?
아마도 구현이 아직 완료되지 않았을 수 있습니다. 릴리스 정보를 확인 했습니까? 람다가 일해야한다고 말하는가? 어쨌든, 이것은 자바 개발자와 논의해야 할 것입니다 ... 제공된 피드백 채널을 사용합니다 (그들이 무엇이든간에). –
@StephenC 글쎄, 이번 버전의 JDK/JRE 8은 내가 발견 할 수있는 최신 버전이다 (출시일 : 2012 년 6 월 21 일). 그리고 그 코드 샘플을 찾는 데 20 초가 걸렸습니다. 즉, 더 많은 코드 샘플이 있음을 의미합니다. 필자는 완벽하게 작동하지 않을 것이라고 생각하지만 가장 중요한 기능이 존재하지 않는 이유는 무엇입니까? –
컴파일러는 인수에'-source 1.8'이 있다고 불평했습니다. 이 인수를 편집 했습니까? 아니면 "-source 8' 인수를 추가 했습니까? 유효하지 않은 인자가 여전히 존재하도록'javac' 명령 행을 완전히 제어 할 수 없습니까? –