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

级联方法,每个方法返回一个Java8可选[duplicate]

邴越彬
2023-03-14
import java.util.Optional;

public class OptionalCascade {

    public static void main(String[] args) {
        Optional<String> result = 

                // try to get a result with method A
                methodA()

                // if method A did not return anything, then try method B
                .orElseFlatMap(methodB());
    }


    static Optional<String> methodA() {
        return Optional.empty();
    }

    static Optional<String> methodB() {
        return Optional.empty();
    }
}

共有1个答案

雷硕
2023-03-14
Optional<String> result = Optional.ofNullable(methodA().orElseGet(
        () -> methodB().orElse(null)));
public static <T> Optional<T> orElseFlatMap(Optional<T> optional,
        Supplier<Optional<T>> other) {
    return optional.isPresent() ? optional : other.get();
}

Optional<String> result = orElseFlatMap(methodA(), () -> methodB());
 类似资料:
  • 可选的用于表示可为空的对象,该类的一些用途包括 作为方法返回类型,作为返回null以 表示没有可用值的替代方法 区分“未知”(例如,不存在于映射中)和“已知无值”(存在于映射中,具有值 optional.缺席()) 将可为null的引用包装起来存储在不支持null的集合中(不过有几种其他方法应该首先考虑) 对于第一种情况,我是否需要在所有可为空的返回方法中返回可选的?

  • 这看起来有点奇怪,因为orElse方法使用的变量不在lambda的范围内。我能知道最好的方法吗? 也许我应该说说为什么我选择了可选的。我希望我的团队的开发人员明白,即使字符串A是首选的,它可能是空的,并且必须处理,因为代码的这一部分是敏感的。字符串B仅用于记录的遗留部分。希望这能澄清我对这种方法的意图。

  • 问题内容: 我必须对一个大型Java项目做一个一般性的说明,但是我对它的了解很少,我想知道是否有确定以下内容的准则: 每个包有多少个类可以被认为是正确的,低或高的(这个项目每个包有3.89个类,对我来说似乎太小了), 每个类有多少种方法?(该项目每个类有6.54个方法… 每个方法的行数?(此项目每种方法大约有7行(对我来说似乎不错,也许有点低)) 我应该指出,这个问题仅涉及体积。我有很多来自质量工

  • 我们的一些代码在执行过程中会抛出不同的异常。我想将异常替换为;但optional只能通知用户该值不存在。我需要更多关于执行期间发生的各种问题的详细信息。我需要这些详细信息,主要用于错误消息和获取正确的错误代码。 在这种情况下,使用 的预期方式是什么?

  • 我对在Java8中使用optionals是新手。我知道orElseGet()方法接受一个供应商,orElseThrow()也接受一个引发异常的供应商。如果我可以构造自己的异常,并在异常被触发时执行某些操作,orElseThrow()可能是一个很好的方法。 我的主要目标是使用一个方法,该方法要么获得未包装的值,要么如果可选包装为null,则实际执行一个完全不同的函数。 寻找最接近的东西: 如果唯一的