我写了下面的代码来检查某些情况。
/**
* Returns true if any of the dose detail is an x
* @return boolean
*/
public <DD extends BD<DI>, DI extends BI> boolean Y(final Collection<DD> dds) {
return dds.stream().anyMatch(dd -> dd.M().K());
}
但是此方法有一些风险dds,为空。我需要返回false也是dd也为null。如何使用Java 8将此方法修改为null安全?
答案 0 :(得分:6)
或者您可以这样做。更多或类似的方式
return dds != null && dds.stream().anyMatch(dd -> dd.M().K());
答案 1 :(得分:2)
它可能很简单
public <DD extends BD<DI>, DI extends BI> boolean Y(final Collection<DD> dds) {
return dds == null ? false : dds.stream().anyMatch(dd -> dd.M().K());
}
答案 2 :(得分:2)
或者,您也可以将其包装在Optional
周围,如下所示:
public <DD extends BD<DI>, DI extends BI> boolean Y(final Collection<DD> dds) {
return Optional.ofNullable(dds)
.filter(d -> d.stream().anyMatch(dd -> dd.M().K()))
.isPresent();
}
答案 3 :(得分:1)
我喜欢@the_tech_maddy的回答。从 org.apache.commons.collections.CollectionUtils
;
return CollectionUtils.isNotEmpty(dds) && dds.stream().anyMatch(dd -> dd.M().K());