1 回答
TA贡献1804条经验 获得超2个赞
如果你想让你的代码更简洁,你有其他方法可以做到,除非你只想用一行代码来炫耀。这是处理它的方法之一。它不是单行代码,也没有使用任何 lambda,但它仍然是有效的 Java 8 代码并且具有相同的逻辑,但以更简单的方式表达。
DateTime getChangedDoseEndDate(final DateTime actualTerminateDate, final DateTime discontinueDate) {
if (actualTerminateDate != null && actualTerminateDate.isBefore(discontinueDate)) {
return actualTerminateDate;
}
return discontinueDate;
}
您甚至可以使用三元运算符并将其放入单行代码中(并且它仍然是有效的 Java 8 代码)。
DateTime getChangedDoseEndDate(final DateTime terminateDate, final DateTime discontinueDate) {
return terminateDate != null && terminateDate.isBefore(discontinueDate) ? terminateDate : discontinueDate;
}
但是,如果您可以保证空安全,您可能会拥有类似于您的 Guava 代码的东西(自您提出以来,它运行良好)。
DateTime getChangedDoseEndDate(@Nonnull final DateTime actualTerminateDate, @Nonnull final DateTime discontinueDate) {
return Stream.of(actualTerminateDate, discontinueDate).min(Comparator.naturalOrder()).get();
}
添加回答
举报