我写了这样的java代码,
private DateTime getChangedDoseEndDate(final DateTime actualTerminateDate, final DateTime discontinueDate)
{
if (actualTerminateDate == null)
{
return discontinueDate;
}
if (discontinueDate == null)
{
return actualTerminateDate;
}
else if (actualTerminateDate.isBefore(discontinueDate))
{
return actualTerminateDate;
}
else
{
return discontinueDate;
}
}我正在尝试转换番石榴,编写单行函数。这是我试过的。是对的吗?我还需要它转换java 8。
return Ordering.natural().nullsLast().min(discontinueDate, actualTerminateDate);发布于 2019-07-17 20:47:34
如果您想使代码更简洁,那么您有其他方法可以做到这一点,除非您只想用一行代码来炫耀。下面是处理这个问题的方法之一。它不是一行代码,也不使用任何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;
}但是,如果您能够保证空安全,您可能有类似于您的番石榴代码的代码(因为您问了它,它运行得很好)。
DateTime getChangedDoseEndDate(@Nonnull final DateTime actualTerminateDate, @Nonnull final DateTime discontinueDate) {
return Stream.of(actualTerminateDate, discontinueDate).min(Comparator.naturalOrder()).get();
}https://stackoverflow.com/questions/57053350
复制相似问题