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();
}
}
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,则实际执行一个完全不同的函数。 寻找最接近的东西: 如果唯一的