gpt4 book ai didi

JavaFX用lambda实现call方法的回调

转载 作者:行者123 更新时间:2023-12-02 12:35:56 25 4
gpt4 key购买 nike

我在这里找到了一段非常好的代码:blog

我想在我的应用程序中实现它。这篇博文是 2014 年的,作者没有使用 lambda。我尝试自己做,以避免真正难看的匿名调用,但我不知道该怎么做。有原代码:

tableColumn.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {
return new SimpleStringProperty((param.getValue().get(j).toString()));
}
});

Intellij 会自动将其转换为:

tableColumn.setCellValueFactory(param -> 
new SimpleStringProperty((param.getValue().get(j).toString())));

但是有一个错误:

Cannot resolve method getValue()

关于“参数”。我将其稍微更改为:

tableColumn.setCellValueFactory((TableColumn.CellDataFeatures<ObservableList, String> param) -> 
new SimpleStringProperty((param.getValue().get(j).toString())));

因此它不起作用:

Incompatible parameter types in lambda expression: 
expected object but found CellDataFeatures<ObservableList, String>

我一直在寻找如何修复它,但不幸的是我找不到简单的答案。

最佳答案

您很可能使用原始 TableColumn实例。
TableColumn是一个声明为 TableColumn<S,T> 的泛型类哪里

S - Th type of the TableView generic type (i.e. S == TableView)

T - The type of the content in all cells in this TableColumn.

所以当你写:

col.setCellValueFactory(
(param->new SimpleStringProperty(param.getValue().get(j).toString())));

param编译器将其视为使用 Object 声明的变量类和Object当然没有 getValue()方法。
而编译错误:

Cannot resolve method getValue()

声明参数化/泛型 TableColumn实例,它应该可以解决您的问题。

关于JavaFX用lambda实现call方法的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45145431/

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