如何将以下 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();
}
我这样写 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();
}