我有这个Vaadin对象:
CheckBox mycb = new CheckBox("caption");
稍后此复选框的值将从数据库更新,如下所示:
mycb.setValue(dbvalue);
dbvalue
在数据库中实际上是NULL。此行前mycb
不为空,此行后 null 。它的值不应该保持不变,只有mycb.getValue()
返回null吗?
此外,尝试通过短路评估来避免NullPointerException:
if (mycb != null && mycb.getValue() == true)
...
无论如何都会产生NullPointerException。这是正常行为还是我做错了什么?
答案 0 :(得分:4)
你说你自己mycb实际上并没有变成空位。太棒了。
if (mycb != null && mycb.getValue() == true)
这会抛出NullPointerException
,因为Java会尝试将mycb.getValue()
的结果转换为boolean
。但由于mycb.getValue()
返回null
,因此会抛出NullPointerException
。
将其更改为:
if (mycb.getValue() != null && mycb.getValue() == true)
或类似的东西