我有这样一个类结构:
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 8 中用 1 行实现这一点?
最佳答案
您描述的是方法 Optional.map
:
Integer valA = foo.getFoob().map(foo -> foo.getValA()).orElse(null);
map
允许您在 Optional
中转换值(如果该值存在),如果该值不存在则返回一个空的可选值。
另请注意,您可以从映射函数返回 null,在这种情况下,结果将为 Optional.empty()
。
关于java - 可选地获取字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37969456/