我有一个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()));
最佳答案
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()));