【发布时间】:2020-11-07 01:40:23
【问题描述】:
例如:
public class HelpMetric {
private String metricId;
private String supportType;
private RequestSupportVo requestSupport;
}
public class RequestSupportVo {
private String requestSupportId;
}
public List<HelpMetric> getHelpMetric(String metricId) {
List<PolHelpMetric> list =helpMetricMapper.hlpMetricListToPolHelpMetricVoList(all);
list.forEach(x -> {
if (x.getRequestSupport() != null) {
if (x.getRequestSupport().getRequestSupportId() != null) {
}
}
}
如果使用 Java 8 进行条件空检查,我如何优化上述代码二
if (x.getRequestSupport() != null) { if (x.getRequestSupport().getRequestSupportId() != null) {
【问题讨论】:
-
你听说过
&&吗? -
是的,但你知道在这种情况下 if (x.getRequestSupport() != null && x.getRequestSupport().getRequestSupportId() != null) { }。如果 x.getRequestSupport().getRequestSupportId() 它的 (x.getRequestSupport()) 值为 null 意味着我们将获得空指针异常..所以我们不能保持 && 条件
-
对。有什么问题?
&&如果第一个条件评估为假,则短路。你不会得到 NullPointerException。 -
如果你想使用流 api 做条件,那么 list.filter(1st cond).filter(2nd cond).forEach(...)