当前位置: 首页 > 知识库问答 >
问题:

如何将匿名java类转换为lambda表达式?

罗昊明
2023-03-14

我在JavaFX上有一个应用程序。在这个应用程序中,我需要实现专栏的编辑器。在旧版本中,该代码运行良好:

myColumn.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<MyRowDataObject, String>>() {
                    @Override
                    public void handle(TableColumn.CellEditEvent<MyRowDataObject, String> t) {
                        ((MyRowDataObject) t.getTableView().getItems().get(
                                t.getTablePosition().getRow())
                        ).setFirstName(t.getNewValue());
                    }
                }
);

但是当我试图用lambda重写代码时

myColumn.setOnEditCommit((TableColumn.CellEditEvent event) ->
                ((MyRowDataObject) event.getTableView().getItems().get(event.getTablePosition().getRow())).setEmail(event.getNewValue().toString())
);

我得到一个错误:错误:java:不兼容的类型:lambda表达式中的不兼容参数类型告诉我如何指定lambda表达式的类型?

共有1个答案

邹嘉荣
2023-03-14

也许有人会感兴趣,转而编译以下代码。

 myColumn.setOnEditCommit(event -> {
                final TableColumn.CellEditEvent _evn = (TableColumn.CellEditEvent) event;
                ((MyRowDataObject) _evn.getTableView().getItems().get(_evn.getTablePosition().getRow())).setEmail(_evn.getNewValue().toString());
            });
 类似资料:
  • 我有这段代码,但IntelliJ告诉我用lambda替换anonymous,但我不知道如何替换。有谁能帮我一下吗?下面是我的代码:

  • 问题内容: 我想了一下,想到了一个有趣的问题,假设我们有一个配置(输入)文件,其中: 此外,我们还有s 的列表: 有没有办法将s(等)转换为代表lambda表达式的s?然后可以用作: 我将如何编写这样的方法? 我可以从JDK / JRE中重用吗? 我需要自己编写所有内容吗? 是否有可能将范围缩小到仅捕获lambda的其他内容? 问题答案: 马可对这个问题的评论是正确的。您无法从文件中读取裸Java

  • 问题内容: 我在Java 8映射操作中传递了一个Function,Intellij告诉我可以将其替换为lambda表达式。但是我不知道如何在不创建中间对象结构的情况下做到这一点。 这是我的工作: 我认为Intellij建议我这样做: 我不知道一种干净的方法来获取在匿名函数中检索到的objectType.getTempUrl()。getFullUrl()部分,有什么建议吗? 问题答案: 你总是可以写

  • 对于定义一个简单的函数, Python 还提供了另外一种方法,即使用本节介绍的 lambda 表达式。 lambda 表达式,又称 匿名函数,常用来表示内部仅包含 1 行表达式的函数。如果一个函数的函数体仅有 1 行表达式,则该函数就可以用 lambda 表达式来代替。 lambda 表达式的语法格式如下: name = lambda [list] : 表达式 其中,定义 lambda 表达式,必

  • 匿名函数   在Go中函数也是值,程序中可以声明一个函数类型的变量,将函数作为参数传递。声明函数为值的变量(匿名函数:可赋值个变量,也可直接执行) pro04_1_2_1.go package main import ( "fmt" ) //求矩形的面积 func main() { myfun := func(x int, y int) int { retur

  • 问题内容: Java中的东西 现在它应该像这样转换成kotlin 但这是不正确的。 这是我得到的错误: 实际上,上面的代码只是一个说明问题的示例。这是我的原始代码: 问题答案: 正如@AndroidEx正确指出的那样,与Java不同,分配不是Kotlin中的表达式。原因是通常不建议带有副作用的表达。见这个讨论上类似的话题。 一种解决方案是拆分表达式并将赋值移出条件块: 另一个是使用stdlib中的