【发布时间】:2020-03-19 02:28:46
【问题描述】:
我想使用 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;
}
【问题讨论】:
-
我认为您应该不太关心是否可以使用
Optional进行简化,而应该关心一般要简化的内容。请使用大括号。 -
@akuzminykh,用大括号编辑了代码,对此感到抱歉。这是必需的检查。不知道我是否可以进一步简化它。
-
我建议你嵌套 if-s,外部检查一个日期,内部检查另一个日期。我也觉得你可以提取一些代码作为可重用的方法
-
我认为前三个检查可以替换为 LocalDateTime eDate = Optional.ofNullable(beDate).orElse(aeDate);您可以继续使用该方法。提示:检查 Optional 的其他方法
-
@IliaNedoluzhko 不完全是,因为如果两者都存在,则该提法不会选择较早的。
标签: java datetime if-statement java-8 optional