Использование Optinal

 
 
 
Сообщения:5
Неоднократно встречал рекомендацию используя Optional применять метод ofPreset(Consumer<? super T> consumer).
У меня метод, который я хотел бы написать так:
public static long durationOfTimeRangeInDay(LocationScheduleTimeRange locationScheduleTimeRange, LocalDate localDate, ChronoUnit chronoUnit) {
    dateTimeRangeInDay(locationScheduleTimeRange, localDate).ifPresent(dateTimeRange -> {
        return chronoUnit.between(dateTimeRange.getKey(), dateTimeRange.getValue());
    });
    return 0;
}

Но я не могу вернуть из лямбды значение, потому приходится использовать один из двух вариантов:
public static long durationOfTimeRangeInDay(LocationScheduleTimeRange locationScheduleTimeRange, LocalDate localDate, ChronoUnit chronoUnit) {
    AtomicLong result = new AtomicLong(0);
    dateTimeRangeInDay(locationScheduleTimeRange, localDate).ifPresent(dateTimeRange -> {
        result.set(chronoUnit.between(dateTimeRange.getKey(), dateTimeRange.getValue()));
    });
    return result.get();
}

или
public static long durationOfTimeRangeInDay(LocationScheduleTimeRange locationScheduleTimeRange, LocalDate localDate, ChronoUnit chronoUnit) {
    Optional<AbstractMap.SimpleEntry<LocalDateTime,LocalDateTime>> dateTimeRange = dateTimeRangeInDay(locationScheduleTimeRange, localDate);
    if (dateTimeRange.ifPresent()) {
        return dateTimeRange.get();
    });
    return 0;
}

Есть ли между ними значимая разница и какой стилистически лучше?
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет