2

如果我这样做:

BooleanProperty b = new SimpleBooleanProperty();
b.setValue(null);
System.out.println(b.getValue());

我收到输出:

false

如何将SimpleBooleanProperty值设置为null?设置SimpleBooleanPropertynull( BooleanProperty b = null;) 是个坏主意,因为我将使用绑定。

我建立的方式:

ObjectProperty<Boolean> b = new SimpleObjectProperty<Boolean>(null);
System.out.println(b.getValue());

工作正常。

我无法回答我的问题,所以我把它放在这里,对不起。

4

2 回答 2

6

SimpleBooleanProperty是围绕boolean(原始)的包装器 - 空值自动设置为默认(假)值。

如果要允许null值,可以使用ObjectProperty<Boolean> b = new SimpleObjectProperty<> ();. 缺点是您丢失了默认的布尔绑定。

或者,您可以创建一个覆盖现有 setValue 实现的自定义类,但这可能有点复杂,因为它依赖于set(boolean)显然不能接受的方法null......

于 2013-09-03T14:03:31.600 回答
1

我认为没有办法将值设置为null. 看BooleanProperty#setValue实现,

public void setValue(Boolean paramBoolean)
{
    set(paramBoolean == null ? false : paramBoolean.booleanValue());
}

这正是您所看到的行为。

于 2013-09-03T13:19:40.690 回答