gpt4 book ai didi

java - Java 中的 Lambda 表达式不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:51 25 4
gpt4 key购买 nike

我正在尝试为 ActionListener 制作一个 lambda 表达式,但它给了我一个 IllegalStart 表达式,到目前为止我正在尝试运行的内容如下所示:

    JFrame frame = new JFrame();
JButton boton = new JButton("Lambda Button");
boton.addActionListener(event -> System.out.println("Hello World!"));
frame.add(boton);

frame.setVisible(true);

另一方面,当我改用这段代码时:

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);

它工作得很好,

最初我认为问题可能是我正在运行的 java 版本,但我只是更新并继续做同样的事情,当我执行 java -version 时,我给了我以下信息:

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)

因此,据我所知,它有一个与 lambda 表达式兼容的版本,但没有成功使它们工作,关于他可能发生什么的任何想法或建议?

编辑:当我尝试编译时,我得到了这个:

Prueba.java:57: error: illegal start of expression
boton.addActionListener(event -> System.out.println("Hello World !"));
^1 error

编辑2:我没有使用任何 IDE,我是从命令行编译的

最佳答案

编辑

根据您的评论,您没有使用任何 IDE,并且您的 javac 版本是 1.7。您需要使用 java 8 进行编译,否则将无法识别 lambda。


我会在我的回答中保留这部分,因为它可能会为其他人解决问题,即使在这种情况下这不是解决方案。

您的 lambda 完全没问题。该错误可能是由于错误的编译器合规性级别设置所致。

如果您使用 eclipse,请参阅这篇文章了解如何更改编译器合规性级别:

How to change JDK version for an Eclipse project

如果您使用 Netbeans,请记住(很多人忘记了这一点)如果您想让它运行,您必须将 sourcelibraries target 都设置为 8


来源 enter image description here


enter image description here

从命令行调用 java -version 并不意味着在 IDE 中设置了正确的库,因此您必须验证这一点。

如果您使用任何其他 IDE,那么谷歌 “如何在 YourIDE 上更改 jdk 版本”

关于java - Java 中的 Lambda 表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29654504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com