我有这样的类结构:
public class Foo {
private FooB foob;
public Optional<FooB> getFoob() {
return Optional.ofNullable(foob);
}
}
public class FooB {
private int valA;
public int getValA() {
return valA;
}
}
我的目标是为fooB
调用get方法,然后检查它是否存在。如果存在,则返回valA
属性,如果不存在,则仅返回null。所以像这样:
Integer valA = foo.getFoob().ifPresent(getValA()).orElse(null);
当然,这不是正确的Java 8可选语法,但这是我的“伪代码”。用Java 1行有什么办法实现这一目标?
您正在描述的是map
方法:
map
[Integer valA = foo.getFoob().map(f -> f.getValA()).orElse(null);
允许您在函数存在的情况下在map
中转换该值,如果该值不存在,则仅更改可选的类型。
还请注意,您可以从映射函数返回null,在这种情况下,结果将为Optional
。
为什么不将Optional.empty()
方法添加到类getValue
?这将是一种授权。
Foo