Получение объекта из stream или выброс исключения
Есть код (здесь Date date условно, может быть любой POJO класс):
Date date;
List<Date> array = new ArrayList<>();
array.add(new Date());
Optional<Date> first = array.stream().filter(d -> d.after(new Date())).findFirst();
if (first.isPresent()) {
date = first.get();
} else {
throw new Exception();
}
Могу я каким-то образом сделать это без if/else, чтобы сразу получить объект или бросить исключение, то есть дописать что-то после findFirst()?
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Не просто можно, но и нужно, Optional не принято использовать с условными операторами:
List<Date> array = new ArrayList<>();
array.add(new Date());
Date result = array.stream().filter(d -> d.after(new Date())).findFirst().orElseThrow(RuntimeException::new);
P.S. лучше использовать класс LocalDateTime (либо другой класс из этого пакета в зависимости от потребоностей), т.к. класс Date по факту устарел.