gpt4 book ai didi

java - 将回调转换为 Java 8 Lambda 表达式

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

在我当前的项目中,我正在开发一个包含 TreeTableView 的相当简单的 JavaFX GUI。要初始化 View ,我有以下代码。

cmdNrColumn.setCellFactory(new Callback<TreeTableColumn<Command, Command>, TreeTableCell<Command, Command>>() {
@Override public TreeTableCell<Command, Command> call(final TreeTableColumn<Command, Command> p) {
return new TreeTableCell<Command, Command>() {
@Override protected void updateItem(Command item, boolean empty) {
super.updateItem(item, empty);

TreeTableView treeTable = p.getTreeTableView();

if (getIndex() >= treeTable.getExpandedItemCount()) {
setText(null);
} else {
TreeItem<Command> treeItem = treeTable.getTreeItem(getIndex());
if (item == null || empty || treeItem == null || treeItem.getValue() == null) {
setText(null);
} else {
setText(Integer.toString(item.getCmdNr()));
}
}
}
};
}
});

作为 Java 8 的新手,我不太确定是否以及如何将其简化为 Lambda 表达式。

如有任何关于如何将复杂的嵌套调用转换为 Lambda 表达式的帮助或教程,我们将不胜感激

谢谢!

最佳答案

您可以将外部匿名类转换为 lambda 表达式:

cmdNrColumn.setCellFactory(p ->
new TreeTableCell<Command, Command>() {
@Override
protected void updateItem(Command item, boolean empty) {
// ...
TreeTableView treeTable = p.getTreeTableView();
// ...
}
});

但是,同样的转换对于内部匿名类是不可能的,因为 TreeTableCell 是一个抽象类,lambda 表达式只能用于接口(interface)。

关于java - 将回调转换为 Java 8 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23978676/

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