[英]how to convert following java code to java 8?
I write java code like this , 我这样写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;
}
}
I am trying to it convert Guava , to write single line function. 我正在尝试将Guava转换为编写单行函数。 This is ,I tried one.
这是我尝试过的。 Is it correct ?
这是正确的吗 ? I also need to it convert java 8 .
我还需要将其转换为Java 8。
return Ordering.natural().nullsLast().min(discontinueDate, actualTerminateDate);
If you want to make your code more succinct, you have other means to do so, unless you want just to show off with a one-liner. 如果您想使代码更简洁,则可以采用其他方法,除非您只想单线展示。 Here is one of the ways to approach it.
这是解决该问题的方法之一。 It's not a one-liner and it's not using any lambdas either, but it's still a valid Java 8 code and it has the same logic, but expressed in a more simple way.
它不是单行的,也没有使用任何lambda,但是它仍然是有效的Java 8代码,并且具有相同的逻辑,但是用更简单的方式表示。
DateTime getChangedDoseEndDate(final DateTime actualTerminateDate, final DateTime discontinueDate) {
if (actualTerminateDate != null && actualTerminateDate.isBefore(discontinueDate)) {
return actualTerminateDate;
}
return discontinueDate;
}
You can even use ternary operator and fit it in a one-liner (and it's still a valid Java 8 code). 您甚至可以使用三元运算符并将其适合于单行(它仍然是有效的Java 8代码)。
DateTime getChangedDoseEndDate(final DateTime terminateDate, final DateTime discontinueDate) {
return terminateDate != null && terminateDate.isBefore(discontinueDate) ? terminateDate : discontinueDate;
}
However, if you can guarantee null safety, you may have something similar to Guava's code of yours (which is working perfectly, since you asked). 但是,如果可以保证null安全,那么您可能会拥有类似于Guava的代码(自从您提出要求以来,它就可以很好地工作)。
DateTime getChangedDoseEndDate(@Nonnull final DateTime actualTerminateDate, @Nonnull final DateTime discontinueDate) {
return Stream.of(actualTerminateDate, discontinueDate).min(Comparator.naturalOrder()).get();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.