我有一个SimpleIntegerProperty
,它应该能够存储null
。但是,这是不可能的,因为写在IntegerProperty的JavaDoc:JavaFX:在SimpleIntegerProperty中存储null
注:设置或绑定这个属性到
null
值属性设置为“0.0”。见setValue(java.lang.Number)
。
这也适用于其他属性,如LongProperty
,FloatProperty
,DoubleProperty
和BooleanProperty
(但不StringProperty
,这使得null
!)。为什么会这样?有没有一种解决方法可以在这些属性中存储null
?
的原始包装类型,'IntegerProperty','DoubleProperty'等,都是意思就是:原始类型的可观察包装器。所以'IntegerProperty'旨在包装一个'int',这当然不能具有'null'值。为了方便,'IntegerProperty'实现'Property',所以它继承'setValue(Number)'方法;然而它并不打算用于将该值设置为“null”(并且正如您观察到的,记录将该值设置为默认值“0”)。如果你想要一个可以接受'null'的observable,使用'ObjectProperty '。 –