Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么不是';有没有可选的.or(可选默认)方法?_Java_Guava_Optional - Fatal编程技术网

Java 为什么不是';有没有可选的.or(可选默认)方法?

Java 为什么不是';有没有可选的.or(可选默认)方法?,java,guava,optional,Java,Guava,Optional,有没有办法使下面的代码示例更简洁 final FluentIterable<AuthContext> withEmails = // ... final Optional<AuthContext> verified = withEmails.firstMatch(VERIFIED_EMAIL); if (verified.isPresent()) { return verified.get(); } return withEmai

有没有办法使下面的代码示例更简洁

final FluentIterable<AuthContext> withEmails = // ...               
final Optional<AuthContext> verified = withEmails.firstMatch(VERIFIED_EMAIL);

if (verified.isPresent()) {
    return verified.get();
}

return withEmails.first().orNull();
final fluentitrable

或者
返回verified.or(使用emails.first().orNull())
将在
orNull()
方法返回null时失败。

只需执行
verified.or(使用emails.first()).orNull()

根据方法的返回类型和您选择的IDE,类型推断可能不建议这样做,因为它返回的是另一个类型为T的
可选
,而不是T本身

c、 f.

只需执行
验证。或(使用email.first()).orNull()

根据方法的返回类型和您选择的IDE,类型推断可能不建议这样做,因为它返回的是另一个类型为T的
可选
,而不是T本身


c、 f.

它的标签是
番石榴
,所以我引用了那些文档——虽然我也看到
with emails
是一个具体的列表,而不是可选的AuthContext,所以这实际上是不正确的。是的,我也看到了这一点,因为该方法在接口中明显存在,但在Java 8版本中缺失。好的,我检查了
fluenterable
的Javadocs,并且
first()
确实返回了一个
可选的
——所以我现在保留我的答案,除非OP可以澄清为什么
方法对他们不起作用(旧库?@LeonardBrünings FYI,他们重新命名了大多数可选方法——在JDK8yes中是
orElse
,但是它只接受
T
,而不接受
Optional
,所以用Java8 Optional链接Optionals是不可能的。它被标记为
guava
,所以我引用了那些文档——虽然我也看到
with email
是一个具体的列表,而不是可选的authContext,所以这实际上是不正确的。是的,我也看到了这一点,因为该方法在接口中明显存在,但在Java 8版本中缺失。好的,我检查了
fluenterable
的Javadocs,并且
first()
确实返回了一个
可选的
——所以我现在保留我的答案,除非OP可以澄清为什么
方法对他们不起作用(旧库?@LeonardBrünings FYI,他们重命名了大多数可选方法——在JDK8yes中是
orElse
,但是它只接受
T
,而不接受
Optional
,所以用Java8 Optional链接可选方法是不可能的。