Вы правы, говоря, ifPresent
возвращает void и, следовательно, не подходит в этом случае.Ваша IDE предлагает вам просто сделать:
timestamp.map(Obj2::new).orElse(null);
Это читается как "если Optional timestamp
имеет текущее состояние, тогда передайте объект, который он содержит, в конструктор Obj2
и вернет этот новый Obj2
экземпляр в противном случае (orElse
) возвращает null
.
на другой ноте, IntelliJ IDEA может помочь вам сгенерировать код, который он предлагает.
, например, с учетом приведенного нижеснимок экрана:
Я просто нажал на "выделенную" часть и нажал "ALT + ENTER", и IntelliJ предлагает, следует ли заменить условие нафункциональный стиль.