简体   繁体   English

如何将匿名Java类转换为Lambda表达式?

[英]How transform anonymous java class to lambda expression?

I have an application on JavaFX. 我在JavaFX上有一个应用程序。 In this application, I need to implement, the editor of the column. 在此应用程序中,我需要实现该列的编辑器。 In the old version of the code worked perfectly: 在旧版本的代码中,效果很好:

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

but when I tried to rewrite the code using the lambda 但是当我尝试使用lambda重写代码时

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

I get an error :Error: java: incompatible types: incompatible parameter types in lambda expression Tell me how to specify the type of a lambda expression? 我收到一个错误:Error:java:incompatible types:lambda表达式中的参数类型不兼容告诉我如何指定lambda表达式的类型?

Maybe someone will be interested, turned to compile the code as follows. 也许会有人感兴趣,转而按如下方式编译代码。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM