是否有可能通过检查对对象的引用而不是方法结果来使用可选的?
Is there possibility to use optional by checking reference to object instead of method result?
我有以下代码:
if(myObject != null){
return myObject.foo();
}else{
return "default";
}
我想使用 guava 中的 optional,但调用 foo() 会导致 NPE(因为 mObject 可能为 null)。
有谁知道怎么做或其他方法来避免 if 语句?
正如 Jon Skeet 指出的那样,您还没有说出您期望使用 Optional
的好处。
您将获得与原始代码相同的结果
return Optional.fromNullable(myObject)
.transform(new Function<MyObject, String> {
@Override
public String apply(MyObject input) {
return input.foo();
}
})
.or("default");
或者,使用 Java 8 和 lambdas :
return Optional.fromNullable(myObject)
.transform(MyObject::foo)
.or("default");
如果您还没有 Optional<MyObject>
,对于相同的最终结果来说,这有点令人费解。原始版本更简单,使用三元运算符的替代版本也是如此。
我有以下代码:
if(myObject != null){
return myObject.foo();
}else{
return "default";
}
我想使用 guava 中的 optional,但调用 foo() 会导致 NPE(因为 mObject 可能为 null)。 有谁知道怎么做或其他方法来避免 if 语句?
正如 Jon Skeet 指出的那样,您还没有说出您期望使用 Optional
的好处。
您将获得与原始代码相同的结果
return Optional.fromNullable(myObject)
.transform(new Function<MyObject, String> {
@Override
public String apply(MyObject input) {
return input.foo();
}
})
.or("default");
或者,使用 Java 8 和 lambdas :
return Optional.fromNullable(myObject)
.transform(MyObject::foo)
.or("default");
如果您还没有 Optional<MyObject>
,对于相同的最终结果来说,这有点令人费解。原始版本更简单,使用三元运算符的替代版本也是如此。