gpt4 book ai didi

java - 如何用 fromNullable 包装返回可选 的方法?

转载 作者:行者123 更新时间:2023-12-02 04:21:50 26 4
gpt4 key购买 nike

我有一个不属于我的方法,该方法返回 null,但返回类型为Optional 。当我调用 x.IsPresent() 时,它会抛出异常(场景#2)。我尝试将该方法包装在 fromNullable 中,但出现类型不匹配(下面的屏幕截图)。我该如何修复才能使 IsPresent() 不会抛出异常?

import com.google.common.base.Optional;

private Optional<Boolean> get_I_dontHaveControlOverThisMethod () {
return null; // Ooops!
}

// Compile error? -----------------------> vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
Optional<Boolean> x = Optional.fromNullable(get_I_dontHaveControlOverThisMethod());
// (#1) Optional<Boolean> x = Optional.fromNullable(null); // <- this work fine
// (#2) Optional<Boolean> x = get_I_dontHaveControlOverThisMethod();
if (x.isPresent()) { // <- this blows up! NPE when (#2) runs
// non-null good value;
}

enter image description here

最佳答案

使用

Optional<Boolean> x = get_I_dontHaveControlOverThisMethod();
if(x == null) x = Optional.absent();

如果您经常调用此类方法,您可以将其包装到函数中:

static <T> Optional<T> safeOptional(Optional<T> optional) {
return optional == null ? Optional.absent() : optional;
}

并使用:

Optional<Boolean> x = safeOptional(get_I_dontHaveControlOverThisMethod());

关于java - 如何用 fromNullable 包装返回可选 <T> 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30746647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com