我有一个SetProperty<Point>
和一个产生Stream<Point>
的函数。
Stream<Point> generatePoints(Point p) {
// ...
}
ObjectProperty<Point> selectedPointProperty() {
// ...
}
SetProperty<Point> generatedPoints = new SimpleSetProperty();
我想将generatedPoints
绑定到将generatedPoints
应用于selectedPointProperty()
的结果的结果。我尝试了以下代码,但它有类型错误。
generatedPoints.bind(Bindings.createObjectBinding(() -> generatePoints(selectedPointProperty().get()).collect(Collectors.toSet()),
selectedPointProperty()));
答案 0 :(得分:1)
SetProperty<T>
不是Property<Set<T>>
,而是Property<ObservableSet<T>>
。
因此属性所需的类型和
返回的类型generatePoints(selectedPointProperty().get()).collect(Collectors.toSet())
不匹配。您需要从ObservableSet
返回Callable
,例如:
generatedPoints.bind(Bindings.createObjectBinding(() -> FXCollections.observableSet(generatePoints(selectedPointProperty().get()).toArray(Point[]::new)),
selectedPointProperty()));