【发布时间】:2017-08-08 23:16:20
【问题描述】:
我有一个对象,我想检查这个对象或嵌套字段是否为空。我想打印这个网域,但我应该检查某个级别是否有空值,否则我会得到空指针异常。
我知道我可以做到:
if( object != null && object.A != null && object.A.B != null && object.A.B.C != null && object.A.B.C.D != null) { doSomething( object.A.B.C.D);}
但它太长了。你知道更好的检查方法吗?
【问题讨论】:
-
您可以尝试将嵌套字段插入到数组中,然后对数组中的每个对象运行空值检查,但我认为实际考虑这样做太复杂了。但这是一种可能。
-
防止它们为空。使用 NullObject 模式/范例。 en.wikipedia.org/wiki/Null_Object_pattern#Java 或 Axel sais vvv
-
好吧,如果这是一个复杂的嵌套数据,那么在这个结束时做一个检查并捕获NPE,如果发生异常,它是无效的。使用异常不是一个好主意,但在某些“异常”中,我想这更容易
-
您可以切换到Groovy 并执行
if (object?.A?.B?.C?.D) { doSomething( object.A.B.C.D);} -
毕竟,不得不进行 4 次间接访问是一种代码味道……
标签: java variables object field