首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将以下java代码转换为java 8?

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

Stack Overflow用户
提问于 2019-07-16 08:41:40
回答 1查看 129关注 0票数 0

我写了这样的java代码,

代码语言:javascript
复制
 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。

代码语言:javascript
复制
return Ordering.natural().nullsLast().min(discontinueDate, actualTerminateDate);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-17 20:47:34

如果您想使代码更简洁,那么您有其他方法可以做到这一点,除非您只想用一行代码来炫耀。下面是处理这个问题的方法之一。它不是一行代码,也不使用任何lambda,但它仍然是一个有效的Java 8代码,具有相同的逻辑,但用更简单的方式表达。

代码语言:javascript
复制
DateTime getChangedDoseEndDate(final DateTime actualTerminateDate, final DateTime discontinueDate) {
  if (actualTerminateDate != null && actualTerminateDate.isBefore(discontinueDate)) {
    return actualTerminateDate;
  }
  return discontinueDate;
}

您甚至可以使用三元操作符并将其放入一行程序(它仍然是有效的Java 8代码)。

代码语言:javascript
复制
DateTime getChangedDoseEndDate(final DateTime terminateDate, final DateTime discontinueDate) {
  return terminateDate != null && terminateDate.isBefore(discontinueDate) ? terminateDate : discontinueDate;
}

但是,如果您能够保证空安全,您可能有类似于您的番石榴代码的代码(因为您问了它,它运行得很好)。

代码语言:javascript
复制
DateTime getChangedDoseEndDate(@Nonnull final DateTime actualTerminateDate, @Nonnull final DateTime discontinueDate) {
  return Stream.of(actualTerminateDate, discontinueDate).min(Comparator.naturalOrder()).get();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57053350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档