首页 > 解决方案 > 我得到了一个可选对象,可能是null,那我们如何使用或判断呢?

问题描述

像这样的代码

Optional<String> str = getString();

但 str 可能为空。

那么我们如何使用这个对象呢?因为我在使用的时候遇到了 NPE 异常。

str.isPresent()

标签: java

解决方案


似乎您的getString()方法null在应该返回时返回Optional.empty()。根据您的评论,您建议您不能重构该getString()方法。

您最好的选择是在Optional内部包装 anOptional以满足如下类型:

Optional<Optional<String> string = Optional.ofNullable(getString()); 

然后你可以在这里使用:

final boolean getStringReturnedValue = string.isPresent(); 
if (getStringReturnedValue) {
    final Optional<String> returnedValue = string.get(); 
    if (returnedValue.isPresent()) {
        final String value = returnedValue.get(); 
        // value usage...
    } else {}
} else {} 

推荐阅读