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

标签 java lambda java-8

我有一个关于 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 表达式的类型?

最佳答案

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

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

关于java - 如何将匿名java类转换为lambda表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27759765/

相关文章:

java - 如何将 `addMP3PlayerListener` 与 JACo MP3 播放器库一起使用

c# - 将表达式和 lambdas 参数传递给 F# 中的 C# 扩展方法

java - 是否可以要求一定数量的输入并在单个流中对它们进行处理?

groovy - 带有 Groovy 'with' 闭包的重复 try-catch block ?

java - JDK 9 的 JCE zip 文件

java - 如果可选 boolean 值为真,如何执行操作?

java - MySQL 连接到标准 java 类但不连接到 servlet

JAVAFX 如何使堆叠在标签后面的按钮可点击

java - 如何使用 RichFaces 'repeat' 标签迭代 java Iterable?

lambda - TypeScript 和 Knockout 绑定(bind)到 'this' 问题 - 需要 lambda 函数吗?