如何将以下java代码转换为java 8?
我这样写java代码如何将以下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
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(终止日期)?终止日期:终止日期如果你感兴趣,我可以用我的推理写一个更详细的答案。至于您的番石榴代码,它工作得很好,涵盖了初始方法的所有情况。@Eugene Severy,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();
}