【发布时间】:2018-10-15 11:42:03
【问题描述】:
我需要一种通用的空值检查方法。我提出了一个要求。 这是我的类的 setter 方法:
placeHolderValues.setCurrentAddressCountry(communicationSO.getApplicationDetailSO().getApplicantDetails().get(0).getAddressDetail().get(0).getCountry());
我只想在值存在时在placeHolderValues.setCurrentAddressCountry() 中设置值。如果getApplicationDetailSO() 或getApplicantDetails() 或getAddressDetail() 或getCountry() 中的任何一个为NULL,那么我必须在placeHolderValues.setCurrentAddressCountry() 中设置NULL。我有将近 30 种这样的 setter。
我需要一个通用的方法来达到同样的效果。
【问题讨论】:
-
不知道你用的是java 8吗?然后尝试使用 Optional,它是 nullpointerexception 的一个很好的解决方案,如果它为 null,您还可以提供默认值。
-
所以问题是你的 getter 链可能会导致 NPE 并且你不想检查每个调用的结果?在那种情况下,正如 huy 已经建议的那样, Optional 确实是一种选择(没有双关语意)。
-
我不确定为什么在被调用者中进行简单的空检查是不够的,但是我会注意到您的调用是上帝的调用,这是一种代码异味和 30 种不同或多或少做同样事情的 setter 可能会告诉你,代码架构很糟糕。