Javaでオプションを使用して、複数のnullチェック8

Pi53:

私は複数持つコードの一部の下に簡素化したいifelse全く例えば、いくつかのJava 8の機能を使用してそれらを取り除くための方法はありますJavaの8を使用した文Optional私はここで何かを見つけることを試みたが、答えを見つけることができませんでした。

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 strike-:

ここでのロジックを理解することは非常に困難です。代わりに、より直接的に自分の意思を表現します:

private static final Comparator<ChronoLocalDateTime<?>> EARLIEST_PRESENT = 
    Comparator.nullsLast(Comparator.naturalOrder());

LocalDateTime eDate = BinaryOperator.minBy(EARLIEST_PRESENT).apply(beDate, aeDate);

(からの要素の静的インポートことを注意ComparatorとはBinaryOperator、これがより明確になります。)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=318674&siteId=1