Tôi tryig để thực hiện một expresion lambda cho một ActionListener, nhưng nó đem lại cho tôi một IllegalStart phát biểu, những gì tôi đang cố gắng để chạy cho đến nay trông như thế này:biểu Lambda trong java không làm việc
JFrame frame = new JFrame();
JButton boton = new JButton("Lambda Button");
boton.addActionListener(event -> System.out.println("Hello World!"));
frame.add(boton);
frame.setVisible(true);
Mặt khác, khi tôi sử dụng mã này để thay thế:
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);
Nó hoạt động hoàn toàn tốt đẹp,
Ban đầu tôi tought vấn đề này có thể là phiên bản của java tôi đang chạy, nhưng tôi chỉ cần cập nhật và giữ làm như vậy, khi tôi làm một -version java tôi mang lại cho tôi những điều sau đây:
java -version phiên bản java "1.8.0_45" Java (TM) SE Runtime Environment (xây dựng 1.8.0_45-b14) Java HotSpot (TM) khách hàng VM (xây dựng 25,45-b02, chế độ hỗn hợp)
vì vậy, theo như tôi biết nó có một phiên bản tương thích với biểu thức lambda nhưng không succed trên khiến họ làm việc, bất kỳ ý tưởng hoặc đề nghị về những gì anh ta có thể xảy ra?
EDIT: Khi tôi cố gắng để biên dịch i có được điều này:
Prueba.java:57: error: illegal start of expression
boton.addActionListener(event -> System.out.println("Hello World !"));
^1 error
EDIT2: tôi không sử dụng bất kỳ IDE, im biên soạn từ dòng lệnh
Bạn đang sử dụng IDE nào? Bạn có chắc chắn JDK cho dự án của bạn được định nghĩa cho Java 8 JDK home? – mtyurt
Trong IDE của bạn, bạn có đang biên dịch mã của mình thành 1.8 không? (trong Eclipse: các thuộc tính dự án> trình biên dịch java> tuân thủ JDK). Bất kể JRE bạn đang sử dụng để chạy nó, bạn vẫn cần phải biên dịch nó là 1,8. –
Im không sử dụng bất kỳ IDE, im chạy nó từ dòng lệnh ... – user4792574