Ich tryig eine Lambda-expresion für eine Action zu machen, aber es ist mir eine IllegalStart des Ausdrucks zu geben, was ich versuche, so weit zu laufen wie folgt aussieht:Lambda Ausdruck in Java nicht funktioniert
JFrame frame = new JFrame();
JButton boton = new JButton("Lambda Button");
boton.addActionListener(event -> System.out.println("Hello World!"));
frame.add(boton);
frame.setVisible(true);
Auf der anderen Seite, wenn ich diesen Code verwenden statt:
JFrame frame = new JFrame();
JButton boton = new JButton("Lambda Button");
boton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.out.println("Hello World!");
}
} );
frame.add(boton);
frame.setVisible(true);
Es perfekt funktioniert gut,
i tought Zunächst wird die Ausgabe der Java-Version könnte ich laufen werde, aber ich gerade aktualisiert und hält tut das gleiche, wenn ich ein java -version gibt, gebe ich mir folgendes:
java -version java version "1.8.0_45" Java (TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot (TM) Client VM (Build 25.45-b02, mixed mode)
Also, soweit ich es haben, wissen eine Version kompatibel mit Lambda-Ausdruck, aber nicht succed auf was sie arbeiten, irgendwelche Ideen oder Vorschläge von was könnte er geschehen?
EDIT: Wenn ich versuche ich zu kompilieren bekommen dies:
Prueba.java:57: error: illegal start of expression
boton.addActionListener(event -> System.out.println("Hello World !"));
^1 error
EDIT2: ich jede IDE nicht verwenden, im von der Kommandozeile kompilieren
Welche IDE verwenden Sie? Sind Sie sicher, dass das JDK für Ihr Projekt auf Java 8 JDK home definiert ist? – mtyurt
In Ihrer IDE kompilieren Sie Ihren Code als 1.8? (in Eclipse: Projekteigenschaften> Java-Compiler> JDK-Konformität). Unabhängig davon, mit welcher JRE Sie es ausführen, müssen Sie es immer noch als 1.8 kompilieren. –
Ich verwende keine IDE, ich führe es von der Befehlszeile aus ... – user4792574