mam tryig dokonać wprowadzić wyrażenie lambda dla ActionListener, ale to daje mi IllegalStart wypowiedzi, co staram się uruchomić tak dalece wygląda następująco:Lambda wyraz w java nie działa
JFrame frame = new JFrame();
JButton boton = new JButton("Lambda Button");
boton.addActionListener(event -> System.out.println("Hello World!"));
frame.add(boton);
frame.setVisible(true);
z drugiej strony, jeśli mogę użyć tego kodu:
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);
to działa perfekcyjnie,
Początkowo myślałam kwestia może być wersja java biegnę, ale ja po prostu aktualizowany i trzyma robi to samo, kiedy zrobić -version java i daje mi następujące:
java -version wersja java "1.8.0_45" Java (TM) SE Runtime Environment (build 1.8.0_45-B14) Java HotSpot (TM) Client VM (build 25,45-B02, tryb mieszany)
tak, o ile wiem, to masz wersję zgodną z wyrażenia lambda ale nie succed na wprowadzenie ich do pracy, wszelkie pomysły i sugestie co mógł się stać?
EDIT: Kiedy próbuję skompilować i uzyskać w ten sposób:
Prueba.java:57: error: illegal start of expression
boton.addActionListener(event -> System.out.println("Hello World !"));
^1 error
EDIT2: nie używam żadnych IDE, im kompilacji z wiersza poleceń
Jakiego IDE używasz? Czy na pewno JDK dla twojego projektu jest zdefiniowany jako home Java JDK? – mtyurt
W swoim IDE, czy kompilujesz swój kod jako 1.8? (w Eclipse: właściwości projektu> kompilator java> zgodność z JDK). Niezależnie od tego, z jakiego środowiska JRE korzystasz, musisz go jeszcze skompilować w wersji 1.8. –
Nie używam żadnego IDE, im uruchamiam go z wiersza poleceń ... – user4792574