【发布时间】:2017-02-10 13:40:14
【问题描述】:
我有一个SimpleIntegerProperty,它应该能够存储null。但是,这是不可能的,正如IntegerProperty的JavaDoc中所写:
注意:将此属性设置或绑定到
null值会将属性设置为“0.0”。见setValue(java.lang.Number)。
这也适用于其他属性,例如LongProperty、FloatProperty、DoubleProperty 和BooleanProperty(但不适用于StringProperty,它允许null!)。为什么会这样?是否有解决方法可以将null 存储在这些属性中?
【问题讨论】:
-
原始包装器类型
IntegerProperty、DoubleProperty等的目的正是为了:原始类型的可观察包装器。所以IntegerProperty打算包装一个int,它当然不能采用null值。为了方便,IntegerProperty实现了Property<Number>,所以继承了setValue(Number)方法;但是,它不打算用于将值设置为null(并且正如您所观察到的,已记录将值设置为默认值0)。如果你想要一个可以接受null的 observable,请使用ObjectProperty<Integer>。
标签: java javafx null primitive