我想使用Java 8使用多个if
和else
语句简化以下代码。
有没有一种方法可以使用某些Java 8功能完全摆脱它们,例如Optional
?
我试图在这里找到一些东西,但是找不到答案。
LocalDateTime beDate = someDate;
LocalDateTime aeDate = someDate;
LocalDateTime eDate;
if (beDate == null && aeDate == null) {
eDate = null;
}
else if (beDate != null && aeDate == null) {
eDate = beDate;
}
else if (beDate == null && aeDate != null) {
eDate = aeDate;
}
else if (beDate != null && aeDate != null &&
(beDate.isEqual(aeDate) || beDate.isBefore(aeDate))) {
eDate = beDate;
}
else {
eDate = aeDate;
}
最佳答案
这里的逻辑很难理解。相反,请直接表达您的意图:
private static final Comparator<ChronoLocalDateTime<?>> EARLIEST_PRESENT =
Comparator.nullsLast(Comparator.naturalOrder());
LocalDateTime eDate = BinaryOperator.minBy(EARLIEST_PRESENT).apply(beDate, aeDate);
(请注意,从
Comparator
和BinaryOperator
元素的静态导入将使这一点更加清晰。)关于java - 在Java 8中使用Optional进行多个空检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60750119/