[可选获取字段

问题描述 投票:7回答:2

我有这样的类结构:

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行有什么办法实现这一目标?

java java-8 optional consumer
2个回答
18
投票

您正在描述的是map方法:

map

[Integer valA = foo.getFoob().map(f -> f.getValA()).orElse(null); 允许您在函数存在的情况下在map中转换该值,如果该值不存在,则仅更改可选的类型。

还请注意,您可以从映射函数返回null,在这种情况下,结果将为Optional


1
投票

为什么不将Optional.empty()方法添加到类getValue?这将是一种授权。

Foo
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.