Múltiples cheques nulos utilizando Opcional en Java 8

Pi53:

Quiero simplificar el siguiente fragmento de código con múltiples ify elsedeclaraciones 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 Comparatory BinaryOperatorva a hacer esto aún más claro.)

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=318677&siteId=1
Recomendado
Clasificación