空检查链与捕获空点异常
Web服务返回一个巨大的XML,我需要访问它的深度嵌套字段。例如:
return wsObject.getFoo().getBar().getBaz().getInt()
问题是, ,可能全部返回。getFoo()
getBar()
getBaz()
null
但是,如果我在所有情况下都检查代码,代码会变得非常冗长且难以阅读。此外,我可能会错过某些字段的检查。null
if (wsObject.getFoo() == null) return -1;
if (wsObject.getFoo().getBar() == null) return -1;
// maybe also do something with wsObject.getFoo().getBar()
if (wsObject.getFoo().getBar().getBaz() == null) return -1;
return wsObject.getFoo().getBar().getBaz().getInt();
是否可以接受编写
try {
return wsObject.getFoo().getBar().getBaz().getInt();
} catch (NullPointerException ignored) {
return -1;
}
或者这会被认为是一个反模式吗?