java可选:如果做某事模式

Jor*_*rdi 1 java optional

是否能够将此代码嵌入到Optional方法链中:

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());
}
Run Code Online (Sandbox Code Playgroud)

我想再次使用前一个appOpt对象.我想将所有这些逻辑嵌入Optional方法链中.

我想应该有另一种更优雅的方式来获得它.

我试过玩,ifPresent但它返回void,所以我无法链接orElse方法:

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

我希望我解释得那么好.

有任何想法吗?

Era*_*ran 7

再次查看原始代码后,如果Optional为空,则逻辑应该运行:

Application application = appOpt.orElseGet(() -> {
    Application app = new Application();
    app.setUserCreation("userCreation"));
    app.setTimestampCreation(new Date());
    return app;
});
Run Code Online (Sandbox Code Playgroud)