如何将以下 java 代码转换为 java 8?

how to convert following java code to java 8?

我这样写 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;
    }
  }

我正在尝试将其转换为 Guava 以编写单行函数。 这是,我试过一个。这是正确的吗 ?我还需要它转换 java 8 .

return Ordering.natural().nullsLast().min(discontinueDate, actualTerminateDate);

如果你想让你的代码更简洁,你有其他方法可以做到,除非你只是想炫耀一下one-liner。这是处理它的方法之一。它不是 one-liner 也没有使用任何 lambda,但它仍然是一个有效的 Java 8 代码并且它具有相同的逻辑,但以更简单的方式表达。

DateTime getChangedDoseEndDate(final DateTime actualTerminateDate, final DateTime discontinueDate) {
  if (actualTerminateDate != null && actualTerminateDate.isBefore(discontinueDate)) {
    return actualTerminateDate;
  }
  return discontinueDate;
}

您甚至可以使用三元运算符并将其放入 one-liner(并且它仍然是有效的 Java 8 代码)。

DateTime getChangedDoseEndDate(final DateTime terminateDate, final DateTime discontinueDate) {
  return terminateDate != null && terminateDate.isBefore(discontinueDate) ? terminateDate : discontinueDate;
}

但是,如果你能保证 null 安全,你可能有一些类似于你的 Guava 代码的东西(它运行得很好,因为你问过)。

DateTime getChangedDoseEndDate(@Nonnull final DateTime actualTerminateDate, @Nonnull final DateTime discontinueDate) {
  return Stream.of(actualTerminateDate, discontinueDate).min(Comparator.naturalOrder()).get();
}