无法使用提取器实例化 ObservableList

Cannot instantiate ObservableList with an extractor

我有一个自定义对象 FermentableInRecipe,它填充 TableView。为了响应列表中项目的更改以及列表本身,我决定使用提取器。这是我的 ObservableList:

的声明和实例化
private ObservableList<FermentableInRecipe> fermentablesInRecipe = 
FXCollections.observableArrayList(item -> new Observable[]{item.WeightProperty()});

这里是我自定义的相关段class:

public class FermentableInRecipe {

    private DoubleProperty weight;

    ...

    public Double getWeight() {
         return this.weight.getValue();
    }

    public void setWeight(Double value) {
        this.weight.setValue(value);
    }

    public DoubleProperty WeightProperty() {
        if (weight == null) {
            weight = new SimpleDoubleProperty(0.0);
        }
        return weight;
    }

    ...
}

在我下面提供的 link 中,这种方法奏效了。但是 Netbeans 告诉我 "DoubleProperty 无法转换为 Observable"。我明白为什么会这样,但我不明白为什么它在下面的 link 中起作用而不对我起作用,以及我应该如何创建提取器并将其 link 到 weightProperty()如果此方法不起作用,请执行此操作。

链接:

JavaFX 2.0 Choice Box Issue. How to update a choiceBox, which represents a list of objects, when an object is updated?

提前致谢。如果我遗漏了任何重要信息,请告诉我。

您编写的代码没有任何问题,这对我来说编译得很好:

import javafx.application.Application;
import javafx.beans.Observable;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.stage.Stage;

public class JavaFXApplication1 extends Application {

    class FermentableInRecipe {

        private DoubleProperty weight;

        public Double getWeight() {
            return this.weight.getValue();
        }

        public void setWeight(Double value) {
            this.weight.setValue(value);
        }

        public DoubleProperty WeightProperty() {
            if (weight == null) {
                weight = new SimpleDoubleProperty(0.0);
            }
            return weight;
        }

    }

    private ObservableList<FermentableInRecipe> fermentablesInRecipe = FXCollections.observableArrayList(item -> new Observable[]{item.WeightProperty()});

    @Override
    public void start(Stage primaryStage) throws Exception {
    }
}

我建议仔细检查导入,并确保您没有错误地导入 java.util.Observable 或类似内容。