使用Optional安全地导航“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链中的空值变得更加容易。
使用Optional进行空值处理
Optional 是表示可选值的包装类。它可以包含非空值或为空。
要在获取链中使用Optional进行空处理,我们可以通过map()方法利用其链接功能。
考虑以下示例:
Optional.ofNullable(house) .map(house -> house.getFloor(0)) .map(floorZero -> floorZero.getWall(WEST)) .map(wallWest -> wallWest.getDoor()) .map(door -> wallWest.getDoor());
此代码创建一系列Optional对象,每个对象代表相应get调用的结果。
使用Optional的好处
使用Optional有几个好处:
结论
如果你无法避免违反德米特定律,强烈推荐使用Optional 来安全地导航“get”调用链。它提供了一种优雅且高效的方式来处理空值,确保代码的健壮性和可靠性。
以上是Java 的可选类型如何简化'Get”调用链中空值的处理?的详细内容。更多信息请关注PHP中文网其他相关文章!