java Необязательно: если сделать что-то шаблон - PullRequest
0 голосов
/ 15 января 2019

Можно ли написать этот код, встроенный в цепочку необязательных методов:

Optional<Application> appOpt = this.applicationDao.findById(application.getCode());

Application app = appOpt.orElse(Application::new);

if (!appOpt.isPresent()) {
    app.get().setUserCreation("user");
    app.get().setTimestampCreation(new Date());
}

Я бы хотел снова воспользоваться предыдущим appOpt объектом. Я хотел бы встроить всю эту логику в цепочку необязательных методов.

Полагаю, должен быть другой, более элегантный способ получить его.

Я пытался поиграть с ifPresent, но он возвращает void, поэтому я не могу связать orElse метод:

appOpt.ifPresent(a -> {
    a.setUserCreation("userCreation"));
    app.setTimestampCreation(new Date());
})
.orElse(Application::new);

Надеюсь, я так хорошо объяснил.

Есть идеи?

1 Ответ

0 голосов
/ 15 января 2019

Еще раз посмотрев на исходный код, похоже, что логика должна работать, если Optional пусто:

Application application = appOpt.orElseGet(() -> {
    Application app = new Application();
    app.setUserCreation("userCreation"));
    app.setTimestampCreation(new Date());
    return app;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...