>我有一个SimpleIntegerProperty
应该能够存储null
。但是,这是不可能的,正如 IntegerProperty 的 JavaDoc 中所写的那样:
注意:将此属性设置为
null
值或将此属性设置为"0.0"。请参阅setValue(java.lang.Number)
。
这也适用于其他属性,如LongProperty
、FloatProperty
、DoubleProperty
和BooleanProperty
(但不适用于StringProperty
,它允许null
!为什么会这样呢?是否有解决方法可以在这些属性中存储null
?
> IntegerProperty.setValue(java.lang.Number)
方法在接口 WriteableIntegerValue 和 WriteableValue 中指定。WriteableIntegerValue 的 JavaDoc 指出:
注意:此方法应接受
null
而不抛出异常,而是设置"0"。
如果您正在查看 IntegerPropertyBase
类的代码,您还可以看到该值实际上存储为原始int
(永远无法null
(。这也在 SimpleIntegerProperty 的 JavaFX API 中指定:
此类提供包装
int
值的属性的完整实现。
解决方案:你可以通过使用SimpleObjectProperty<Integer>
而不是SimpleIntegerProperty
来简单地规避它,因为SimpleObjectProperty
允许null
值