如何将以下 java 代码转换为 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);


阿波罗的战车
浏览 132回答 1
1回答

慕婉清6462132

如果你想让你的代码更简洁,你有其他方法可以做到,除非你只想用一行代码来炫耀。这是处理它的方法之一。它不是单行代码,也没有使用任何 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();}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java