0

我有ObservableList一个提取器,以便在更改列表中项目的属性时触发附加到对象的侦听器:

ObservableList<User> users = FXCollections.observableArrayList(param -> new Observable[] {param.getDepartment().departmentNameProperty()});

但是,如果用户没有部门(即 is param.getDepartment()null,则会抛出 NPE。这是有道理的,因为您无法departmentNameProperty从.SimpleStringPropertynull

更改ObservableList为:

ObservableList<User> users = FXCollections.observableArrrayList(param -> {
    if (param.departmentProperty() == null) {
        return new Observable[0];
    } else {
        return new Observable[]{param.getDepartment().departmentNameProperty();
    }

修复了 NPE,但是对于列表中所有位置的更改,observable 似乎没有正确触发。

有什么好的方法可以解决这个问题吗?我目前正在通过不允许空部门来解决它(构造函数现在只创建一个名称为“”的部门),但这似乎是一个草率的解决方案。

4

0 回答 0