当前位置: 首页 > 面试题库 >

如果不存在,如何在Optional上执行逻辑?

庄经国
2023-03-14
问题内容

我想使用java8替换以下代码Optional

public Obj getObjectFromDB() {
    Obj obj = dao.find();
    if (obj != null) {
        obj.setAvailable(true);
    } else {
        logger.fatal("Object not available");
    }

    return obj;
}

以下伪代码由于没有orElseRun方法而无法使用,但无论如何它说明了我的目的:

public Optional<Obj> getObjectFromDB() {
    Optional<Obj> obj = dao.find();
    return obj.ifPresent(obj.setAvailable(true)).orElseRun(logger.fatal("Object not available"));
}

问题答案:

对于Java
9或更高版本,ifPresentOrElse最可能需要的是:

Optional<> opt = dao.find();

opt.ifPresentOrElse(obj -> obj.setAvailable(true),
                    () -> logger.error("…"));

使用vavr之类的方法进行固化可能会得到更整齐的代码,但是我还没有尝试过。



 类似资料:
  • 问题内容: 我有一个使用Python编写的守护程序。运行时,它的PID文件位于/tmp/filename.pid。如果守护程序未运行,则PID文件不存在。 在Linux上,如何检查以确保PID文件存在,如果不存在,请执行命令将其重新启动? 该命令将是 必须从特定目录执行。 问题答案: 检查给定路径是否存在并且是常规文件(仅检查路径是否存在) 在执行测试并返回成功,否则 的是C状,因此,如果左侧的命

  • 问题内容: 我有下表: 如果给定的ID不存在,我想插入具有默认Val的ID。但是,如果它已经存在,我想增加Val的值。 我有以下代码: 并且它可以工作,但是我想用一个SQL语句来完成。我可以吗? 编辑 : 从@ Xikinho90的答案,我的最终代码是 问题答案: 您可以使用插入或替换。 我认为这可以解决问题 您只需要用输入的ID替换数字 谢谢奇科

  • 我目前正在设计一个图像标签系统。从图像到标签有n… m关系。标签本身受到唯一约束的限制。 现在假设用户上传带有标签的图像。标签可能已经存在于数据库中,也可能不存在。如果不存在,则必须插入。现在我无法选择并插入缺少的标签,因为两个线程可能并行,并且一个上传将由于唯一的约束违规而失败。 我目前的设计有效,但似乎非常不正常(每个标签一个插入)。由于ERMAGE类型的postgres限制,我必须对这些插入

  • 问题很简单。如何将列添加到表中,但仅当列不存在时?我在这里只找到了如何检查列是否存在的解决方案。

  • 问题内容: 当我要求模型管理器获取对象时,如果没有匹配的对象,它将引发。 相反的,我怎么能有可以代替? 问题答案: 没有“内置”方式可以做到这一点。Django每次都会引发DoesNotExist异常。在python中处理此问题的惯用方式是将其包装在try catch中: 我所做的是将models.Manager子类化,创建类似于上面的代码,并将该经理用于我的模型。这样,您可以编写:。

  • 问题内容: 嗨,我正在使用Java Optional。我看到Optional有一个ifPresent方法。 而不是做类似的事情: 我想知道如何使用Optional.ifPresent()将值分配给变量。 我正在尝试类似的东西: 我需要lambda函数来获取分配给该变量的值是什么? 问题答案: 您可以使用#orElse或orElseThrow来提高代码的可读性。