Pi53:
Quiero simplificar el siguiente fragmento de código con múltiples if
y else
declaraciones usando Java 8. ¿Hay una manera de deshacerse de ellos por completo el uso de algunos de Java función 8, por ejemplo Optional
? He intentado encontrar algo aquí, pero no pude encontrar una respuesta.
LocalDateTime beDate = someDate;
LocalDateTime aeDate = someDate;
LocalDateTime eDate;
if (beDate == null && aeDate == null) {
eDate = null;
}
else if (beDate != null && aeDate == null) {
eDate = beDate;
}
else if (beDate == null && aeDate != null) {
eDate = aeDate;
}
else if (beDate != null && aeDate != null &&
(beDate.isEqual(aeDate) || beDate.isBefore(aeDate))) {
eDate = beDate;
}
else {
eDate = aeDate;
}
chrylis -on tachado:
La lógica aquí es muy difícil de entender. En su lugar, expresar su intención de manera más directa:
private static final Comparator<ChronoLocalDateTime<?>> EARLIEST_PRESENT =
Comparator.nullsLast(Comparator.naturalOrder());
LocalDateTime eDate = BinaryOperator.minBy(EARLIEST_PRESENT).apply(beDate, aeDate);
(Tenga en cuenta que las importaciones estáticas para los elementos de Comparator
y BinaryOperator
va a hacer esto aún más claro.)