我已经编写了这段代码,现在我正在重构。
String status = "";
if (null != issue.getStatus()) {
status = issue.getStatus().getDescription();
}
String locations = "";
if (null != issue.getSites()) {
locations = issue.getSites().stream()
.map(Site::getName)
.collect(Collectors.joining(","));
}
如果null == issue.getSites()
或null == issue.getStatus()
我想得到一个空的字符串。
在这种情况下,我应该使用Optionals吗?如何最好地使用它们以使其尽可能简单?
Optionals的想法是返回Optional.empty()
而不是null
。这样,无论谁使用您的方法,都将立即知道没有(或null)是调用该方法的有效结果。他也将知道此案需要解决。
相反,当您返回时null
,API用户不清楚是否应该检查null。
举个例子:
String a = getString();
Optional<String> b = getOptionalString();
a
可能总是有效的对象或为null?除非您使用的代码,否则您不知道这一点getString()
。
同时,b
您马上知道b
可能是empty
或non empty
。然后您采取相应的行动。
在您的例子,你可以改变你的代码,以便issue.getSites()
和issue.getStatus()
将返回Optional
,而不是null
或正常对象。
如注释中所述-您还可以考虑从方法中返回默认值而不是null的选项。例如,getStatus()
可能返回空字符串,并且getSites()
可能返回空列表。除非您需要区分默认值或默认值的情况null
然后,您可以执行以下操作:
String status = issue.getStatus().map(issue -> issue.getDescription()).orElse("");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句