建议将以下语句更改为NetBeans中的lambda表达式。
Timeline timeline = new Timeline(new KeyFrame(Duration.millis(5000), new EventHandler() {
@Override
public void handle(Event event) {
//do something
}
}));
但是,当我应用假定的更改(Alt Enter)时,我得到了:
Timeline timeline = new Timeline(new KeyFrame(Duration.millis(5000), (Event event) -> {
//do something
}));
当这不会与消息一起编译时:
没有找到合适的构造函数为KeyFrame(持续时间,(事件前夕[…]}}})-参数不匹配
问题是为什么NetBeans会提出一些它无法实现的东西?如何在Timeline构造函数中实际使用lambda函数?谢谢
您正在调用的关键帧
构造函数采用事件处理程序
所以你需要
Timeline timeline = new Timeline(new KeyFrame(Duration.millis(5000), (ActionEvent event) -> {
//do something
}));
NetBeans感到困惑并插入错误代码的原因是,您从事件处理程序匿名内部类的原始类型开始:
Timeline timeline = new Timeline(new KeyFrame(Duration.millis(5000), new EventHandler() {
@Override
public void handle(Event event) {
//do something
}
}));
(我希望NetBeans在这里发出警告,并建议使用lambda表达式。)
正常的良好编码实践会使用正确类型的事件处理程序:
Timeline timeline = new Timeline(new KeyFrame(Duration.millis(5000), new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
//do something
}
}));
在这种情况下,NetBeans将能够用正确的lambda表达式替换它。
上面写着编译错误 Employee::new、1L、“”、“ 无法解析构造函数。
如何在lambda表达式中将对象设置为另一个?我犯了错误
输出为: 我用带有捕获对象lambda创建了一个std:function。它应该为lambda创建对象的本地副本,但它创建了两次副本(看看move constructor call-用粗体突出显示)。实际上,它会复制整个lambda对象。为什么?我怎么才能避免呢?我正在使用lambdas进行线程间事件处理,它们可能会捕获大量的日期,所以我试图找到一种方法来避免不必要的复制。因此,任务很简单--以最
我有一个中等大小的Spring应用程序。当我重构一些loc时,我注意到以下行为: 事实上,注入工作正常: 当我尝试使用构造函数注入时,环境为空,我的应用程序告诉我,由于循环引用,它无法创建配置bean: 在堆栈的某个地方: 原因:org.springframework.beans.factory.Bean货币InCreationException:创建名为appConfig的bean时出错:请求的
本文向大家介绍python lambda表达式在sort函数中的使用详解,包括了python lambda表达式在sort函数中的使用详解的使用技巧和注意事项,需要的朋友参考一下 1.lambda表达式一般用法 语法: lamda argument:expression example: 2.lambda表达式在sort函数中的使用 假如a是一个由元组构成的列表,对该列表进行排序时,我们需要用到参
如何重构我的代码,以便我的 for 表达式中没有 if 语句? 我得到一个执行异常: 我正在下面定义一个if选项,这导致了问题: 我应该开始使用什么模式来避免此错误?