假设我想执行以下命令:
house.getFloor(0).getWall(WEST).getDoor().getDoorknob();
为了避免 NullPointerException,我必须在以下情况下执行以下操作:
if (house != null && house.getFloor(0) && house.getFloor(0).getWall(WEST) != null
&& house.getFloor(0).getWall(WEST).getDoor() != null) ...
有没有一种方法或已经存在的 Utils 类可以更优雅地执行此操作,让我们说类似下面的内容?
checkForNull(house.getFloor(0).getWall(WEST).getDoor().getDoorknob());
原文由 user321068 发布,翻译遵循 CC BY-SA 4.0 许可协议
最好的方法是 避免 链条。如果您不熟悉 Demeter 法则 (LoD),我认为您应该熟悉一下。您已经给出了一个消息链的完美示例,该消息链与它毫无业务可知的类过于亲密。
得墨忒耳法则: http ://en.wikipedia.org/wiki/Law_of_Demeter