JavaFX:是否有允许空值并提供greaterThan和lessThan等方法的integer属性?

JavaFX:是否有允许空值并提供greaterThan和lessThan等方法的integer属性?,java,javafx,properties,null,Java,Javafx,Properties,Null,在JavaFX中,有一个IntegerProperty类,它继承了greaterThan和lessThan等返回布尔绑定的方法。但是,不允许使用空值,因为它将值存储为int(因此使用单独的IntegerProperty类) 相反,ObjectProperty允许空值,但不提供此类方法 有没有一种方法可以同时实现这两种功能:允许空值,同时能够获得一个布尔绑定(或类似)比较两个属性(例如,可能使用比较器)?静态方法从属性创建IntegerProperty,并在它们之间建立双向绑定。在这种情况下,关于

在JavaFX中,有一个
IntegerProperty
类,它继承了
greaterThan
lessThan
等返回
布尔绑定的方法。但是,不允许使用空值,因为它将值存储为
int
(因此使用单独的
IntegerProperty
类)

相反,
ObjectProperty
允许空值,但不提供此类方法

有没有一种方法可以同时实现这两种功能:允许空值,同时能够获得一个
布尔绑定(或类似)比较两个属性(例如,可能使用
比较器
)?

静态方法从
属性创建
IntegerProperty
,并在它们之间建立双向绑定。在这种情况下,关于如何处理
属性
中的空值,您只有一个选项:它们被视为零

如果这适用于您的用例,那么您只需执行以下操作:

Property<Integer> age = new SimpleObjectProperty<>();
BooleanBinding canVote = IntegerProperty.integerProperty(age).greaterThanOrEqualTo(18);
如果
age
包含
null
,则强制其具有值

Property<Integer> age = new SimpleObjectProperty<>();
BooleanBinding canVote = Bindings.createBooleanBinding(() -> {
    if (age.get() == null) {
        return false ;
    } else {
        return age.get().intValue() >= 18 ;
    }
}, age);
Property<Integer> age = new SimpleObjectProperty<>();
Val<Boolean> canVote = Val.map(age, a -> a >= 18);
ObservableValue<Boolean> canVote = Val.map(age, a -> a >= 18).orElseConst(false);