当前位置: 首页 > 面试题库 >

检查“获取”调用链是否为空

傅花蜂
2023-03-14
问题内容

假设我要执行以下命令:

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());

问题答案:

最好的方法是 避免
连锁。如果您不熟悉Demeter法则(LoD),我认为应该这样做。您已经给出了一个完美的消息链示例,该消息链与没有业务知识的类过于亲密。

得墨meter耳定律:http :
//en.wikipedia.org/wiki/Law_of_Demeter



 类似资料:
  • 在数千项从字符串转换为int的循环中,在调用Integer之前应该检查字符串是否为空。parseInt或应直接依赖NumberFormatException移动到下一个?

  • 问题内容: 所以我知道这是一个很普遍的问题,已经找到了解决方案。但是,当我尝试这样做时,它无法正常工作。 我的JTextField为空,并且未启用该按钮。当我在文本字段中写入内容时,该按钮未启用。 因此,我的程序应每秒检查一次此字段是否为空。只要有人在文本字段中写入内容,就应启用该按钮。^^ 问题答案: 为此,您需要在中添加更改侦听器(一个响应文本更改的侦听器),并且在内,您需要根据是否为空将其更

  • 问题内容: 有什么最短的方法吗? 如果我是正确的,应该用? 有可能,并且在一行中写(也许是数组?)而不重复? 问题答案: 如果要测试变量是否 确实 是,请使用标识运算符: 如果要检查是否未设置变量: 或者,如果变量不为空,则为空字符串,零,..: 如果要测试变量是否不是空字符串,也将足够:

  • 问题内容: 我不能成为“匿名者”吗?它可以为空或的值 。 问题答案: 如果变量已初始化,将返回true。如果您的表单字段的值设置为,则提交该表单时,尽管其中可能没有任何数据,但该值将始终为“设置”。 而是测试字符串并测试其长度

  • 我想检查变量是否为空: 此代码基于:https://www.thomasmaurer.ch/2010/07/powershell-check-variable-for-null/,但这不起作用。 我该怎么解决这个问题? ps。堆栈中有东西