Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java可选:if do something模式_Java_Optional - Fatal编程技术网

java可选:if do something模式

java可选:if do something模式,java,optional,Java,Optional,是否能够将此代码嵌入可选方法链中: Optional<Application> appOpt = this.applicationDao.findById(application.getCode()); Application app = appOpt.orElse(Application::new); if (!appOpt.isPresent()) { app.get().setUserCreation("user"); app.get().setTimest

是否能够将此代码嵌入可选方法链中:

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());
}
我希望我解释得这么好


有什么想法吗?

再次查看原始代码后,如果可选项为空,则逻辑似乎应该运行:

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

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

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

app.get似乎是一个错误,毕竟它不是可选的。开始时的代码与您建议的代码有很大不同,为什么一次应用,然后是一个?假设两者都是a。不过,如果不是从数据库加载,则配置新应用程序对象的一般思路有一个非常简单的解决方案:只需在orElse中进行配置,而不是将其拆分,然后需要进行额外的检查。从DDD PoV中,我希望它无论如何都在构造函数中,但您当然可以使用lambda。除了@Voo的注释外,appOpt.ifPresent与if相反!appOpt.isPresent.app.get似乎是一个错误,毕竟它不是可选的。开始时的代码与您建议的代码有很大不同,为什么一次应用,然后是一个?假设两者都是a。不过,如果不是从数据库加载,则配置新应用程序对象的一般思路有一个非常简单的解决方案:只需在orElse中进行配置,而不是将其拆分,然后需要进行额外的检查。从DDD PoV中,我希望它无论如何都在构造函数中,但您当然可以使用lambda。除了@Voo的注释外,appOpt.ifPresent与if相反!表示同意。