1 回答

TA貢獻1804條經驗 獲得超2個贊
如果你想讓你的代碼更簡潔,你有其他方法可以做到,除非你只想用一行代碼來炫耀。這是處理它的方法之一。它不是單行代碼,也沒有使用任何 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();
}
添加回答
舉報