在代码中我们有很多链方法,例如obj.getA().getB().getC().getD()
。我想创建帮助类,它将检查方法getD()
是否为空,但在此之前,我需要检查所有以前的获得者。我能做到这样:检查方法链中的最后一个getter是否为空
try {
obj.getA().getB().getC().getD();
}
catch (NullPointerException e) {
// some getter is null
}
或(这是“傻”)
if (obj!null && obj.getA()!=null && obj.getA().getB()!=null && ...) {
obj.getA().getB().getC().getD();
}
else {
// some getter is null
}
我不希望在我的代码使用try{} catch()
每次去检查一下。什么是这个目的的最佳解决方案?
我认为最好的将是:
obj.getA().getB().getC().getD().isNull()
- 为此,我需要改变我所有的干将,例如执行包含isNull()
方法的一些接口。NullObjectHelper.isNull(obj.getA().getB().getC().getD());
- 这将是最好的(我认为是这样),但如何实现呢?
解决方案。重构。不要做链接#LawOfDemeter – user802421
@ user802421我不想重构整个应用程序,这是很大的。我想要做的就是创建一些助手类。我同意你的观点,重构将是最好的,但我们没有时间。 – pepuch
我没有看到你的两个“解决方案”如何帮助中间结果为'null' – Henry