我有一个我想使用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中没有允许我实现我的用例的方法。
有人可以帮忙吗?感谢。
答案 0 :(得分:2)
你不能这样做。
javadoc明确说明:Optional
可能包含非空引用。从来没有null
。
您可以做的是创建Optional.fromNullable(whatever).orNull()
。但Optional
永远不会区分空值和不存在,因为它不是它的意图!