【发布时间】:2014-04-13 23:22:42
【问题描述】:
我有一个场景想使用 Guava Optional,但是有问题:
方法是这样的:
private static void method(Optional<Object> myOptional) {
if(myOptional.isPresent()) {
....
}
}
myOptional 可以包含非空值、空值或缺席()。在这种情况下,null 是有效的输入。
在方法中,我想用不同的方式处理非空值和空值,但忽略不存在的值。
但是,如果我在这里使用 isPresent,那么 null 值也会被忽略。但是如果我使用“get”方法,缺失的值会抛出异常。如果我使用 orNull,那么缺失的值也会返回为 null。
我不确定我会在这里做什么。但我认为创建 Optional 的原因是为了区分 null 和缺席,以便 null 成为一个有效的有意义的值。但看起来 Optional 中没有任何方法可以让我实现我的用例。
有人可以帮忙吗?谢谢。
【问题讨论】:
-
我建议不使用
Optional作为方法的参数类型。最好作为 return 类型。如果您将其用作参数,则有更好的选择……例如,您的方法有两个重载,method()和method(Object)。