使用可选的“Get”调用链安全导航
在 Java 编程中,经常会遇到“get”调用链,如下所示:
house.getFloor(0).getWall(WEST).getDoor().getDoorknob();
为了避免潜在的 NullPointerExceptions,开发人员通常采用详细的 null 检查:
if (house != null &&& house.getFloor(0) &&& house.getFloor(0).getWall(WEST) != null &&& house.getFloor(0).getWall(WEST).getDoor() != null) ...
对于较长的调用链,这种方法变得更加笨拙。有没有更优雅的解决方案?
是的,随着Java 8引入了Optional类型,处理gets链中的null值变得更加容易。
使用Optional进行Null处理
Optional 是表示可选值的包装类。它可以包含非空值或为空。
要在获取链中使用Optional进行空处理,我们可以通过map()方法利用其链接功能。
考虑下面的例子:
Optional.ofNullable(house) .map(house -> house.getFloor(0)) .map(floorZero -> floorZero.getWall(WEST)) .map(wallWest -> wallWest.getDoor()) .map(door -> wallWest.getDoor());
此代码创建一系列可选对象,每个对象代表相应 get 调用的结果。
使用的好处可选
使用可选有几个好处:
结论
如果你无法避免打破德米特法则,强烈推荐使用Optional来安全地导航“get”调用链。它提供了一种优雅而有效的方式来处理空值,确保代码的健壮性和可靠性。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3