如何在此方案中使用Guava Optional

时间:2014-04-13 23:22:43

标签: java guava optional

我有一个我想使用Guava Optional的场景,但是有问题:

方法是这样的:

private static void method(Optional<Object> myOptional) {
   if(myOptional.isPresent()) {
       ....
   }
}

myOptional可以包含非null值,null值或absent()。在此方案中,null是有效输入。

在该方法中,我想使用不同的方法处理非空值和空值,但忽略缺少值。

但是,如果我在这里使用isPresent,那么null值也会被忽略。但如果我使用&#34; get&#34;方法,缺席值将抛出异常。如果我使用orNull,则缺少的值也会返回null。

我不确定我会在这做什么。但我认为创建Optional的原因是区分null和不存在,以便null成为有效的有意义值。但看起来在Optional中没有允许我实现我的用例的方法。

有人可以帮忙吗?感谢。

1 个答案:

答案 0 :(得分:2)

你不能这样做。

javadoc明确说明:Optional可能包含非空引用。从来没有null

您可以做的是创建Optional.fromNullable(whatever).orNull()。但Optional永远不会区分空值和不存在,因为它不是它的意图!