Java 如何在此场景中使用番石榴可选

Java 如何在此场景中使用番石榴可选,java,guava,optional,Java,Guava,Optional,我有一个场景,我想使用番石榴可选,但有一个问题: 方法如下: private static void method(Optional<Object> myOptional) { if(myOptional.isPresent()) { .... } } private静态无效方法(可选myOptional){ if(myOptional.isPresent()){ .... } } myOptional可以包含非null值、null值或缺席()。在这种情

我有一个场景,我想使用番石榴可选,但有一个问题:

方法如下:

private static void method(Optional<Object> myOptional) {
   if(myOptional.isPresent()) {
       ....
   }
}
private静态无效方法(可选myOptional){
if(myOptional.isPresent()){
....
}
}
myOptional可以包含非null值、null值或缺席()。在这种情况下,null是有效的输入

在该方法中,我希望使用不同的方法处理非null值和null值,但忽略缺少的值

但是,如果我在这里使用isPresent,空值也将被忽略。但如果使用“get”方法,缺少的值将抛出异常。如果使用orNull,则缺少的值也返回为null

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

有人能帮忙吗?谢谢。

你不能那样做

javadoc明确地说:
可选的
可能包含一个非空引用。永远不要使用
null
one

您可以做的是创建一个
可选的.fromNullable(无论什么).orNull()
。但是,
可选的
永远不会区分空值和不存在的值,因为这不是它的本意

我建议不要将
Optional
用作方法的参数类型。这是最好的返回类型。如果将其用作参数,则有更好的选项。。。例如,方法的两个重载,
method()
method(Object)