我想使用 Java 8 通过多个 if
和 else
语句来简化下面的代码。
有没有办法使用 Java 8 的一些功能来完全摆脱它们,例如可选
?
我试图在这里找到一些东西,但找不到答案。
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/