当前位置: 首页 > 知识库问答 >
问题:

当我需要在optional.orelseget()上使用optional.orelse()时

太叔鸿博
2023-03-14

我需要一个明确的解释这一点,即使我读了这个关于差异的链接,但没有明确的清晰。那么有没有人可以简单地用代码向我解释一下呢?

共有1个答案

唐涛
2023-03-14

我想我开始明白你的问题了。可选执行顺序可能不同于我们在过程编程中所使用的顺序(对于Java流和其他使用lambdas的代码也是如此)。

我将使用尤金回答中的两个例子:

    o1.orElse(new MyObject()); // 1055e4af 

这是普通的旧Java:调用orelse(),并以new MyObject()作为参数。因此,首先计算参数并创建一个新的MyObject。然后将其传递给orelse()orelse()查看可选中是否存在值;如果是,则返回该值(丢弃新创建的对象);如果不是,则返回参数中给它的对象。这是一个更简单的例子。

    o1.orElseGet(() -> {
        System.out.println("Should I see this");
        return new MyObject();
    });
 类似资料:
  • 方法接受一个供应商函数接口,该接口本质上不接受任何参数,并返回。 在哪种情况下需要使用?如果您有一个方法为什么不直接执行而不执行? 似乎并不是要将lambda表达式的执行推迟到以后的某个时间或其他时间,那么这有什么意义呢?(我认为如果它返回一个更安全的会更有用,它的从不抛出并且总是返回true...但显然它不是,它只是返回,就像)。 是不是还有什么我遗漏的不同之处?

  • 问题内容: 我正在学习JPA,有一个问题: 在哪些情况下,我们的应用程序需要多个? 我知道的两种情况如下: 当我们的应用程序是多线程应用程序并且一个以上的线程需要JPA事务时,因为它不是线程安全的,因此每个线程需要一个线程。 当任何一个线程需要多个并发事务时,由于和之间存在一对一的关系,因此在该线程中我们需要多个。 Q1。当我们需要多个条件时,还有其他情况吗? Q2。据我了解,每个Percentn

  • 问题内容: 昨天,当我回答使用迭代器并删除时出现ConcurrentModificationException错误的问题时,我添加了一条通知 当您有ArrayLists时,使用迭代器不是一个好主意。 您无需深刻理解该问题即可回答该问题。 在那里,我有两条评论是我错了。 我的论点: 迭代器不易读取代码。 有可能引发难以调试的ConcurrentModificationException。 你能解释一

  • 问题内容: 如果不需要主键,是否不应该将主键添加到数据库中? 问题答案: 主键唯一地标识表中的一行。 它被索引和/或群集的事实是一个物理实现问题,与逻辑设计无关。 您需要一张桌子才能使它有意义。

  • 但代码不起作用。我是否需要将launchActivity定义为一个规则,或者是否存在我需要在Gradle中导入的库? 这些是我已经有的进口品