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

如何将以下java代码转换为java 8?,java,java-8,stream,guava,Java,Java 8,Stream,Guava,我这样写java代码 private DateTime getChangedDoseEndDate(final DateTime actualTerminateDate, final DateTime discontinueDate) { if (actualTerminateDate == null) { return discontinueDate; } if (discontinueDate == null) { re

我这样写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;
    }
  }
我试着把它转换成番石榴,写单行函数。 这是,我试过一个。对吗?我还需要将它转换为Java8

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

如果你想让你的代码更简洁,你有其他的方法来做到这一点,除非你只是想用一行代码来炫耀。下面是一种方法。它不是一个单行程序,也没有使用任何lambda,但它仍然是一个有效的java8代码,它具有相同的逻辑,但以更简单的方式表示

DateTime getChangedDoseEndDate(final DateTime actualTerminateDate, final DateTime discontinueDate) {
  if (actualTerminateDate != null && actualTerminateDate.isBefore(discontinueDate)) {
    return actualTerminateDate;
  }
  return discontinueDate;
}
您甚至可以使用三元运算符并将其放入一行程序中(它仍然是有效的Java8代码)

然而,如果您可以保证空安全性,那么您可能有类似于您的Guava代码的东西(自从您提出要求以来,它工作得非常好)


为什么是番石榴?您只能用java-8来实现这一点。
Stream.of(ActualAlterMinateDate,DiscontractDate).min(Comparator.nullsLast(Comparator.comparating(Function.identity())).orElseThrow(()->…)
我猜…您是想简化代码还是对Java8/Guava单行程序感兴趣?请检查,这是一个有效的Java8代码<代码>返回终止日期!=null&&terminateDate.isBefore(终止日期)?终止日期:终止日期Comparator.Comparating(Function.identity())?那么
Comparator.naturalOrder()呢
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();
}